mongodb的查询语句学习摘要
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦。 左边是mongodb查询语句,右边是sql语句。对照着用,挺方便。 db.users.find() select * from users db.users.find({ "age" : 27}) select * from users where age = 27 db.users.find({ "username" : "joe" , "age" : 27}) select * from users where "username" = "joe" and age = 27 db.users.find({}, { "username" : 1, "email" : 1}) select username, email from users db.users.find({}, { "username" : 1, "_id" : 0}) // no case // 即时加上了列筛选,_id也会返回;必须显式的阻止_id返回 db.users.find({ "age" : { "$gte" : 18, "$lte" : 30}}) select * from users where age >=18 and age <= 30 // $lt(<) $lte(<=) $gt(>) $gte(>=) db.users.find({ "username" : { "$ne" : "joe" }}) select * from users where username <> "joe" db.users.find({ "ticket_no" : { "$in" : [725, 542, 390]}}) select * from users where ticket_no in (725, 542, 390) db.users.find({ "ticket_no" : { "$nin" : [725, 542, 390]}}) select * from users where ticket_no not in (725, 542, 390) db.users.find({ "$or" : [{ "ticket_no" : 725}, { "winner" : true }]}) select * form users where ticket_no = 725 or winner = true db.users.find({ "id_num" : { "$mod" : [5, 1]}}) select * from users where (id_num mod 5) = 1 db.users.find({ "$not" : { "age" : 27}}) select * from users where not (age = 27) db.users.find({ "username" : { "$in" : [ null ], "$exists" : true }}) select * from users where username is null // 如果直接通过find({"username" : null})进行查询,那么连带"没有username"的纪录一并筛选出来 db.users.find({ "name" : /joey?/i}) // 正则查询,value是符合PCRE的表达式 db.food.find({fruit : {$all : [ "apple" , "banana" ]}}) // 对数组的查询, 字段fruit中,既包含"apple",又包含"banana"的纪录 db.food.find({ "fruit.2" : "peach" }) // 对数组的查询, 字段fruit中,第3个(从0开始)元素是peach的纪录 db.food.find({ "fruit" : { "$size" : 3}}) // 对数组的查询, 查询数组元素个数是3的记录,$size前面无法和其他的操作符复合使用 db.users.findOne(criteria, { "comments" : { "$slice" : 10}}) // 对数组的查询,只返回数组comments中的前十条,还可以{"$slice" : -10}, {"$slice" : [23, 10]}; 分别返回最后10条,和中间10条 db.people.find({ "name.first" : "Joe" , "name.last" : "Schmoe" }) // 嵌套查询 db.blog.find({ "comments" : { "$elemMatch" : { "author" : "joe" , "score" : { "$gte" : 5}}}}) // 嵌套查询,仅当嵌套的元素是数组时使用, db.foo.find({ "$where" : "this.x + this.y == 10" }) // 复杂的查询,$where当然是非常方便的,但效率低下。对于复杂查询,考虑的顺序应当是 正则 -> MapReduce -> $where db.foo.find({ "$where" : "function() { return this.x + this.y == 10; }" }) // $where可以支持javascript函数作为查询条件 db.foo.find().sort({ "x" : 1}).limit(1).skip(10); // 返回第(10, 11]条,按"x"进行排序; 三个limit的顺序是任意的,应该尽量避免skip中使用large-number |
转自:http://www.cnblogs.com/viviman/archive/2012/11/21/2780562.html
分类:
转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?