mongo 查找等于示例

mongo find equals example

我的 mongo 数据库中有这个集合,这是我的代码

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

和其他人....

总是我的结果为零...为什么?正确的结果是什么?

因为它是您要查找的键,而不是值,所以您应该使用 $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 and How to use dot in field name?。这将为您提供以下内容:

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