• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

mongodb特定情况查询

Sql admin 1年前 (2018-05-25) 605次浏览 0个评论 扫描二维码

1、null 查询

db.test.find({"enemies":null})

{ 
    "_id" : ObjectId("5b042463c42e07823911338e"), 
    "name" : 25.0, 
    "friends" : 3.0
}
{ 
    "_id" : ObjectId("5b0811893ba23b5c3e762811"), 
    "enemies" : null
}

在上面我们可以发现第二个文档的确是符合我们的查询条件的,也就是”enemies” : null,但是第一个文档为啥也会被查询出来?
因为第一个文档中根本没有对应的字段,对于 null 的查询,如果文档中没有对应的字段也是会被查询出来的。

所以我们要如何处理这个问题?也就是只想输出上面的结果中的第二条数据
mongodb 是没有 eq 函数的,所以可以使用下面这个方法

db.test.find({"enemies":{"$in":[null],"$exists":true}})


{ 
    "_id" : ObjectId("5b0811893ba23b5c3e762811"), 
    "enemies" : null
}

2、正则式查询


db.test.find({"name":/^he*/i})
{ 
    "_id" : ObjectId("5afd34052c63ae1a943bdb27"), 
    "name" : "hello", 
    "friends" : 34.0, 
    "enemies" : 2.0, 
    "favor" : [
        "2", 
        "3", 
        "4", 
        "6", 
        "7", 
        "8", 
        "9", 
        "10", 
        "1"
    ], 
    "mul" : 1.0
}

/i 就是表明是使用正则表达式的方式查询所需要的文档,具体正则表示需要去看使用文档,但是一般情况下正则表达式的使用规则都是一样的,比如^表示开始匹配的意思


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mongodb 特定情况查询
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!