MongoDB学习 (六):查询
-
- "
、""、
""、
""、""、""、""、""、
- "、""、""、""、""、""、""、""、""
查询集合中文档并返回结果为游标的文档集合。
: 匹配查询条件的文档集合的游标. 如果指定投影参数,查询出的文档返回指定的键 ,"_id"键也可以从集合中移除掉。
:在mongo shell中我们不需要JavaScript游标处理方法就可以直接访问作为查询结果的文档集合。mongo shell默认返回游标中的前条文档。当执行查询操作时,mongo shell直接自动的对游标执行迭代操作并显示前20条文档。输入"it"显示接下来的20条文档。
db.collection.find({})
db.user.find({age: dbContext.user.(p=>p.age==)
db.user.find({age:,sex: dbContext.user.(p=>p.age==&&p.sex== SELECT * FROM user WHERE age= AND sex=
: , : }): , : , :})或者则是查询结果中显示的键;若值为或者,则为不显示键。文档中的键若在参数中没有指定,查询结果中将不会显示(_id例外)。这样我们就可以灵活显示声明来指定返回的键。
store soldnumstocknum
: > db.store.find ({ : })
"_id" : ObjectId("51d7b0d436332e1a5f7299d6"), "name" : { "first" : Barack", "last" : "Obama" } }
> db.profile.find({ name : { last : "Obama" , first : "Barack"} });
db.profile.find({ "name.first" : "Barack" , "name.last" : "Obama" db.profile.find({ "name.last" : "Obama" , "name.first" : "Barack"} );
" 、""、 ""、 ""(分别对应">"、 ">=" 、"<" 、"<="),组合起来进行范围的查找。例如查询年龄为16-18岁(包含16但不含18)的用户:
,$lt:} }"来进行"不相等"操作。例如查询年龄不为18岁的用户:
} }
Date(> db.users.find({ : { : start}})
"判断键值是否为null,""判定集合中文档是否包含该键。
{:,:,::,:,::,:,: db.users.find({sex:{$:[],$exists: db.users.find({birthday:{$:[],$exists: }})
})
})
这种格式。
语法指定下标,例如下面查询出tags键值数组中第2个元素为"school"的文档:
"appliances", "school", "book" ]
"$all"对应的数组只有一个值,那么和直接匹配这个值效果是一样的。
db.inventory.find( { amount: {$all:[5050}} )
",tags键值数组包含四个元素,所以不匹配查询条件。查询结果:
db.collection.update({ $push : {field: value}, $inc :{count : 1 db.collection.find({count : {$gt:2}})
: [<value1>, <value2>, ... <valueN> ] } }或者键值不等于指定数组的任意值的文档。类似sql中not in(SQL中字段不存在使用会有语法错误).
: [ 16, 50 ] } } )
db.inventory.find( { amount: { $nin: [ 16, 50db.inventory.find( { qty: { $nin: [ 16, 50 ] } } )
"$in"对应的数组只有一个值,那么和直接匹配这个值效果是一样的。
db.inventory.find( { amount: {$:[}} )
db.inventory.find({ name: "t1" , amount: { $lt:50 }} )
表达式中指定的键,表达式值为; false nor false 等于 true,所以查询结果返回集合中所有文档:
}, { qty: { $lt: 50 } } ] } )
)。
} } } )
无法匹配表示,所以返回集合所有文档数据。
"判定集合中文档是否包含该键)。
> } }
db.inventory.find( { qty: { $exists: db.inventory.find( { amount: { $exists: , $nin: [ 16, 58 ] } } )
{"name":"t4","amount":,"tags":[ "bag", "school", "book" db.inventory.find( { amount: { $exists: db.inventory.find( { amount: { $exists: } } )
返回结果怎么不一样。因为有一条文档的amount键值为,javascript中null进行,会返回""。所以该条文档匹配$where操作符求模式了表达式。当文档中字段值不存在null,就可以使用$mod替代$where的表达式.
我们可以使用正则表达式对象或者$regex操作符来执行正则匹配:
db.inventory.find( { name: /.4/'.4', $options: 'i' } } );
db.fruit.insert({"apple":1, "banana": 4, "peach" : 4"apple":3, "banana": 3, "peach" : 4})
db.fruit.find( { $where: "this.banana == this.peach""obj.banana == obj.peach"
db.fruit.find( { $where: () { (.banana == () { obj.banana == obj.peach; } } )
( current ( other (current != other && [current] ==
" 指定键名和键值选择出文档集合,并且该文档集合中指定返回从指定数量的元素。如果count的值大于数组中元素的数量,该查询返回数组中的所有元素的。
db.posts.find( {}, { comments: { $slice: 5 db.posts.find( {}, { comments: { $slice: -5 } } );,其中第一个值表示在数组中跳过的项目数,第二个值表示返回的项目数。
db.posts.find( {}, { comments: { $slice: [ 20, 10 db.posts.find( {}, { comments: { $slice: [ -20, 10 ] } } );
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处. 同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。
