Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDb获取子集而不是整个记录_Mongodb - Fatal编程技术网

MongoDb获取子集而不是整个记录

MongoDb获取子集而不是整个记录,mongodb,Mongodb,我的MongoDB文档结构如下: [ { "locale":"en", "translations":[ { "name":"translation1", "value":"enValue" }, { "name":"translation2", "value":"enValue" },

我的MongoDB文档结构如下:

 [
   {
      "locale":"en",
      "translations":[
         {
            "name":"translation1",
            "value":"enValue"
         },
         {
            "name":"translation2",
            "value":"enValue"
         },
         {
            "name":"translation3",
            "value":"enValue"
         }
      ]
   },
   {
      "locale":"ru",
      "translations":[
         {
            "name":"translation1",
            "value":"ruValue"
         },
         {
            "name":"translation2",
            "value":"ruValue"
         },
         {
            "name":"translation3",
            "value":"ruValue"
         }
      ]
   }
]

我需要为locale
en
获取名为
translation1
的翻译。我尝试这样做:
db.translations.find({“locale”:“en”,“translation.name”:“translation1”})
但它返回整个locale行,包含所有翻译,而不仅仅是
translation1
。我是MongoDB的新手,我做错了什么?

您可以使用
$elemMatch
进行此操作

db.translations.find({"locale" : "en"}, 
                     { translations: { $elemMatch: { name: "translation1" } } } )
结果:

{
    "_id" : ObjectId("5e845ba1005e625a6237d2e0"),
    "translations" : [ 
        {
            "name" : "translation1",
            "value" : "enValue"
        }
    ]
}

哦,可能我需要使用聚合???你也可以使用。不确定哪一个更好。嗯,我只是尝试了
db.translations.find({“locale”:“en”},{translations:{$elemMatch:{name:“translation1”}}}}
,结果仍然是整个文档行:
{u id:“5e845b2a2953d9001010fbc0”,“locale:“en”,“translations:[{“name:“translation1”,“value:“enValue”},{“name:”“translation2”,“value”:“enValue”},{“name”:“translation3”,“value”:“enValue”}]}
什么是MongoDB版本?因为在我的服务器上它可以工作。但取决于文档,它应该可以工作……嗯,我想问题在于我使用的游乐场。我只是在我的mongo CLI中运行查询,所有的功能都在那里工作。谢谢!