Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
Python 带条件的Mongodb聚合查询_Python_Mongodb_Mongodb Query_Aggregate Functions - Fatal编程技术网

Python 带条件的Mongodb聚合查询

Python 带条件的Mongodb聚合查询,python,mongodb,mongodb-query,aggregate-functions,Python,Mongodb,Mongodb Query,Aggregate Functions,我必须用python在mongodb上执行聚合,但无法这样做 以下是提取的mongodb文档的结构: {'Category': 'Male', 'details' :[{'name':'Sachin','height': 6}, {'name':'Rohit','height': 5.6}, {'name':'Virat','height': 5} ] } 我想通过聚合函数返回name为Sachin的高度。基本上,我

我必须用python在mongodb上执行聚合,但无法这样做

以下是提取的mongodb文档的结构:

{'Category': 'Male',
 'details' :[{'name':'Sachin','height': 6},
             {'name':'Rohit','height': 5.6},
             {'name':'Virat','height': 5}
            ]
}
我想通过聚合函数返回name为Sachin的高度。基本上,我的想法是通过$match apply条件提取数据,同时使用聚合函数进行聚合。这可以通过使用if语句分3步轻松完成,但我希望在1个聚合函数中完成

请注意:没有固定长度的“详细信息”值


如果需要更多解释,请告诉我。

您可以使用
$filter
来实现

db.collection.aggregate([
  {
    $project: {
      details: {
        $filter: {
          input: "$details",
          cond: {
            $eq: [
              "$$this.name",
              "Sachin"
            ]
          }
        }
      }
    }
  }
])
工作

如果在
中使用,请查找
,但需要注意

工作

如果需要将其设置为对象,只需将
$arrayElemAr
$ifNull

db.collection.find({
  "details.name": "Sachin"
},
{
  "details.$": 1
})