我的mongo db中有这个集合,这是我的代码
> db.getCollection("user1@gmail.com_shareds").find();
{
"_id":ObjectId("56479a5c37863e6c20000029"),
"uuid":{
"otheruuid@gmail.com":{
"collectionPermission":{
"buys":{
"read":true,
"write":true
},
"shops":{
"read":true,
"write":false
},
"buyers":{
"read":true,
"write":true
}
}
}
}
},
{
"_id":ObjectId("56479b6637863e6c2000002d"),
"uuid":{
"lbottoni@live2.it":{
"collectionPermission":{
"buys":{
"read":true,
"write":true
},
"shops":{
"read":true,
"write":false
},
"buyers":{
"read":true,
"write":true
}
}
}
}
},
{
"_id":ObjectId("56479b7437863e6c20000030"),
"uuid":{
"lbottoni@live.it":{
"collectionPermission":{
"buys":{
"read":true,
"write":true
},
"shops":{
"read":true,
"write":false
},
"buyers":{
"read":true,
"write":true
}
}
}
}
}
我想找到等于lbottoni@live.it
的uuid,这些是我的测试(失败)
db.getCollection("user1@gmail.com_shareds").find({"uuid":{$eq:"lbottoni@live.it"}});
db.getCollection("user1@gmail.com_shareds").find({uuid:{$eq:"lbottoni@live.it"}});
db.getCollection("user1@gmail.com_shareds").find({"uuid":{"$eq":"lbottoni@live.it"}});
db.getCollection("user1@gmail.com_shareds").find({"uuid":{$eq:lbottoni@live.it}});
和其他人......
总是我没有结果......为什么?正确的发现是什么?
答案 0 :(得分:0)
因为它是您正在寻找的一个键,而不是一个值,您应该使用$ exists进行检查。您可以使用点符号
访问子键db.getCollection("user1@gmail.com_shareds").find("field.subfield":{$exists:true});
它的文件在这里:https://docs.mongodb.org/manual/reference/operator/query/exists/
你也会遇到问题。在你的文件名中。你可以尝试交换所有。对于此处所述的unicode等效\ uff0E:https://docs.mongodb.org/manual/faq/developers/#dollar-sign-operator-escaping和How to use dot in field name?。这将为您提供以下内容:
db.getCollection("user1@gmail.com_shareds").find("uuid.lbottoni@live\uff0Eit":{$exists:true});