在mongoDB中查询嵌套数组的文档
编辑:以下查询是从DataGrip、mongodb版本执行的在mongoDB中查询嵌套数组的文档,mongodb,mongodb-query,nosql,Mongodb,Mongodb Query,Nosql,编辑:以下查询是从DataGrip、mongodb版本执行的4.2.6 我对mongoDB还相当陌生,我正在翻阅大量文档,但不知道这是如何工作的 我的收藏是这样的: db.cards.insertMany([ { "Name": "SingleFaced Card", "Face": [ {"Type": "Front", "Color": ["Bla
4.2.6
我对mongoDB还相当陌生,我正在翻阅大量文档,但不知道这是如何工作的
我的收藏是这样的:
db.cards.insertMany([
{
"Name": "SingleFaced Card",
"Face": [
{"Type": "Front", "Color": ["Black"]},
]
},
{
"Name": "DoubleFaced Card",
"Face": [
{"Type": "Front", "Color": ["Black"]},
{"Type": "Back", "Color": ["Red", "Yellow"]}
]
},
]);
我想查询至少有一张具有给定颜色的卡片,比如说红色
我尝试了很多不同的选项,所有这些选项都给了我一个0
的计数
db.cards.count({"Face.Color": "Red"}); // 0 record
db.cards.count({"Face.Color": ["Red"]}) // 0 record
db.cards.count({"Face.Color": {$elemMatch:{$in:['Red']}}}) // 0 record
db.cards.count({"Face.Color": {$elemMatch:{$all:['Red']}}}) // 0 record
db.cards.count({"Face.Color": {$elemMatch:{$elemMatch:{$in:['Red']}}}}); // 0 record
我最初认为我的安装有问题,但下面对嵌套字段的查询有效
db.cards.count({"Face.Type" : "Front"}); // 2 record
db.cards.count({"Face.Type" : "Back"}); // 1 record
我该如何做这项工作,有什么建议吗?我在这里使用了错误的设计选择吗?您的第三个问题
db.cards.count({“Face.Color”:{$elemMatch:{$in:['Red']}})
您的第三个查询
db.cards.count({“Face.Color”:{$elemMatch:{$in:['Red']}})
感谢您的链接!我对环境做了一些比较。我在mongodb 4.2.6上通过JetBrain的DataGrip运行这些示例。我已经将db版本降级到4.2.5,并从python包pymongo
重新运行查询,现在可以运行了。可能DataGrip或4.2.6版上都存在链接错误!我对环境做了一些比较。我在mongodb 4.2.6上通过JetBrain的DataGrip运行这些示例。我已经将db版本降级到4.2.5,并从python包pymongo
重新运行查询,现在可以运行了。也许DataGrip或版本4.2.6上存在错误