MongoDB 查询SQL 大全

MongoDB 查询SQL 大全mongodb 与 sql 语句对比左边是 mongodb 查询语句 右边是 sql 语句 对照着用 挺方便 db users find select fromusers db users find age 27 select fromuserswhe 27 db users find username joe age

mongodb与sql语句对比

  1. 左边是mongodb查询语句,右边是sql语句。对照着用,挺方便。  
  2. db.users.find() select * from users  
  3. db.users.find({“age” : 27}) select * from users where age = 27  
  4. db.users.find({“username” : “joe”, “age” : 27}) select * from users where “username” = “joe” and age = 27  
  5. db.users.find({}, {“username” : 1, “email” : 1}) select username, email from users  
  6. db.users.find({}, {“username” : 1, “_id” : 0}) // no case  // 即时加上了列筛选,_id也会返回;必须显式的阻止_id返回  
  7. db.users.find({“age” : {“$gte” : 18, “$lte” : 30}}) select * from users where age >=18 and age <= 30 // $lt(<) $lte(<=) $gt(>) $gte(>=)  
  8. db.users.find({“username” : {“$ne” : “joe”}}) select * from users where username <> “joe”  
  9. db.users.find({“ticket_no” : {“$in” : [725, 542, 390]}}) select * from users where ticket_no in (725, 542, 390)  
  10. db.users.find({“ticket_no” : {“$nin” : [725, 542, 390]}}) select * from users where ticket_no not in (725, 542, 390)  
  11. db.users.find({“$or” : [{“ticket_no” : 725}, {“winner” : true}]}) select * form users where ticket_no = 725 or winner = true  
  12. db.users.find({“id_num” : {“$mod” : [5, 1]}}) select * from users where (id_num mod 5) = 1  
  13. db.users.find({“$not”: {“age” : 27}}) select * from users where not (age = 27)  
  14. db.users.find({“username” : {“$in” : [null], “$exists” : true}}) select * from users where username is null // 如果直接通过find({“username” : null})进行查询,那么连带”没有username”的纪录一并筛选出来  
  15. db.users.find({“name” : /joey?/i}) // 正则查询,value是符合PCRE的表达式  
  16. db.food.find({fruit : {$all : [“apple”, “banana”]}}) // 对数组的查询, 字段fruit中,既包含”apple”,又包含”banana”的纪录  
  17. db.food.find({“fruit.2” : “peach”}) // 对数组的查询, 字段fruit中,第3个(从0开始)元素是peach的纪录  
  18. db.food.find({“fruit” : {“$size” : 3}}) // 对数组的查询, 查询数组元素个数是3的记录,$size前面无法和其他的操作符复合使用  
  19. db.users.findOne(criteria, {“comments” : {“$slice” : 10}}) // 对数组的查询,只返回数组comments中的前十条,还可以{“$slice” : -10}, {“$slice” : [23, 10]}; 分别返回最后10条,和中间10条  
  20. db.people.find({“name.first” : “Joe”, “name.last” : “Schmoe”})  // 嵌套查询  
  21. db.blog.find({“comments” : {“$elemMatch” : {“author” : “joe”, “score” : {“$gte” : 5}}}}) // 嵌套查询,仅当嵌套的元素是数组时使用,  
  22. db.foo.find({“$where” : “this.x + this.y == 10”}) // 复杂的查询,$where当然是非常方便的,但效率低下。对于复杂查询,考虑的顺序应当是 正则 -> MapReduce -> $where  
  23. db.foo.find({“$where” : “function() { return this.x + this.y == 10; }”}) // $where可以支持javascript函数作为查询条件  
  24. db.foo.find().sort({“x” : 1}).limit(1).skip(10); // 返回第(10, 11]条,按”x”进行排序; 三个limit的顺序是任意的,应该尽量避免skip中使用large-number  
  25. 多条件查询  
    db.getCollection('CollectionName').find({"userId":1},{"customerId":61});
  26. 根据时间戳范围查询   
    db.getCollection('CollectionName').find({"userId":61},{"timestamp":{"$gt":00,"$lte":00}})
  27. 条件查排序并分页:1.是升序,  -1是降序    
    db.getCollection('CollectionName').find({"userId":361}).sort({"time":-1}).limit(100);
  28. ISOdate时间范围查询  
    db.getCollection('CollectionName').find({ "timestamp" : { "$gte" : ISODate("2018-04-20T00:00:00Z") , "$lt" : ISODate("2018-04-21T00:00:00Z") }});
  29. 使用$and多条件查询    

    db.getCollection(‘CollectionName’).find( {$and:[{“userId”:37761},{“domain”:”time.com”},{“timestamp”:{“$gt”:00,”$lte”:00}}]}); 

  30. mongodb中对应的范围标识符:  

    "$lt"===================> "<" "$lte"==================> "<=" "$gt"===================> ">" "$gte"==================> ">=" "$ne"===================> "!="
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216980.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:37
下一篇 2026年3月18日 上午10:37


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号