在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

编辑:以下查询是从DataGrip、mongodb版本执行的
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上存在错误