子文档上的Mongodb条件标准

时间:2014-11-26 11:40:57

标签: mongodb mongoose bigdata

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属性

请这只是一个场景,我有更复杂的问题,但这是根本原因,请帮助我,以便其他人不会被这件事抓住。

1 个答案:

答案 0 :(得分: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 } }