【问题标题】:Mongodb condition criteria on subdocumentsMongodb 子文档的条件标准
【发布时间】:2014-11-26 11:40:56
【问题描述】:

Mongo Eaters....

只是一个小问题。关注我提出的这些问题

db.trip.insert({loc:{hello:1,world:1}});

当我这样做时

db.trip.find({loc:{hello:1,world:1}});

我得到了结果,但是当我这样做时

db.trip.find({loc:{hello:1}});

我没有得到结果,实际上我想获取 loc.hello 为 1 的文档,而与任何其他 loc 属性无关

请这只是一个场景,我有更复杂的问题,但这是根本原因,请帮助我,以免其他人陷入这个问题。

【问题讨论】:

    标签: mongodb mongoose bigdata


    【解决方案1】:

    对内部文档使用点符号

    db.trip.find({"loc.hello":1})
    

    看下面的运行。

    > db.trip.insert({loc:{hello:1,world:1}});
    WriteResult({ "nInserted" : 1 })
    > db.trip.find({"loc.hello":1})                                                                
    { "_id" : ObjectId("5475bed907fbea3cf13e14d6"), "loc" : { "hello" : 1, "world" : 1 } }         
    > db.trip.insert({loc:{hello:2,world:1}});                                                     
    WriteResult({ "nInserted" : 1 })                                                               
    > db.trip.insert({loc:{hello:3,world:1}});                                                     
    WriteResult({ "nInserted" : 1 })                                                               
    > db.trip.insert({loc:{hello:4,world:1}});                                                     
    WriteResult({ "nInserted" : 1 })                                                               
    > db.trip.insert({loc:{hello:4,world:1}});                                                     
    WriteResult({ "nInserted" : 1 })                                                               
    > db.trip.insert({loc:{hello:4,world:2}});                                                     
    WriteResult({ "nInserted" : 1 })                                                               
    > db.trip.find({"loc.hello":4})                                                                
    { "_id" : ObjectId("5475bf2907fbea3cf13e14d9"), "loc" : { "hello" : 4, "world" : 1 } }         
    { "_id" : ObjectId("5475bf2b07fbea3cf13e14da"), "loc" : { "hello" : 4, "world" : 1 } }         
    { "_id" : ObjectId("5475bf2d07fbea3cf13e14db"), "loc" : { "hello" : 4, "world" : 2 } }    
    

    【讨论】:

    • 谢谢你,你真的救了我,如果你真的能帮到我,还有一件事,假设中间也有数组,那么如何使用它。符号
    • 我的意思是假设有 loc:[{hello:1},{hello:2},{hello:3}],那么如何对第二个元素制定标准,如“loc[2].hello “:2,对吧?
    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多