Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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_Aggregation Framework - Fatal编程技术网

Mongodb 项目匹配数组中的字段值

Mongodb 项目匹配数组中的字段值,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我想更改文档结构,只在definition数组中显示与文档中idLanguage匹配的定义。我该怎么做 具有由3个元素组成的定义数组(三个不同id的idLanguage)的文档示例: 您可以使用和来匹配这些值。前面的问题表明您至少在使用MongoDB 3.4,所以这应该不是问题: db.collection.aggregate([ { "$addFields": { "definition": { "$arrayElemAt": [ "$definitio

我想更改文档结构,只在
definition
数组中显示与文档中
idLanguage
匹配的定义。我该怎么做

具有由3个元素组成的
定义
数组(三个不同id的
idLanguage
)的文档示例:

您可以使用和来匹配这些值。前面的问题表明您至少在使用MongoDB 3.4,所以这应该不是问题:

db.collection.aggregate([
  { "$addFields": {
    "definition": {
      "$arrayElemAt": [
        "$definition.definition",
        { "$indexOfArray": [
          "$definition.idLanguage",
          "$idLanguage"
        }}
      ]
    }
  }}
])

通过
idLanguage
的匹配位置处的
定义“
(字段)从数组中提取。因此,您将使用这些属性之间匹配的单数值替换“数组”。

如果正确理解您的问题,您可能需要使用该值

db.collection.aggregate([
  {
    $project: {
      reference: 1,
      defination: {
        $filter: {
          input: "$definition",
          as: "elem",
          cond: {$eq: ["$$elem.idLanguage", "0161-1#LG-000001#1"]}
          // instead of "0161-1#LG-000001#1" you can use your variable 
        }
      }
    }
  }
])
仅返回
定义。定义

db.collection.aggregate([
  {"$unwind": "$definition"},
  {"$match": {"definition.idLanguage": "0161-1#LG-000001#1"}},
  {
    $group: {
      _id: "$_id",
      defination: {$push: "$definition.definition"}
    }
  }
])

请求
idLanguage
定义进行比较。idLanguage
?@ShaishabRoy正确。谢谢你的回复!
db.collection.aggregate([
  {"$unwind": "$definition"},
  {"$match": {"definition.idLanguage": "0161-1#LG-000001#1"}},
  {
    $group: {
      _id: "$_id",
      defination: {$push: "$definition.definition"}
    }
  }
])