mongo find equals example

时间:2015-11-18 09:59:37

标签: mongodb find

我的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}});

和其他人......

总是我没有结果......为什么?正确的发现是什么?

1 个答案:

答案 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-escapingHow to use dot in field name?。这将为您提供以下内容:

db.getCollection("user1@gmail.com_shareds").find("uuid.lbottoni@live\uff0Eit":{$exists:true});