如何查询mongodb以获取基于嵌套参数的值的结果?

如何查询mongodb以获取基于嵌套参数的值的结果?,mongodb,mongodb-query,pymongo,Mongodb,Mongodb Query,Pymongo,我第一次与MongoDB合作 我有一个集合,其每个文档在MongoDB中大致采用以下形式: { "name":[ { "value":"abc", "created_on":"2020-02-06 06:11:21.340611+00:00" }, { "value":"x

我第一次与MongoDB合作

我有一个集合,其每个文档在MongoDB中大致采用以下形式:

{
   "name":[
      {
         "value":"abc",
         "created_on":"2020-02-06 06:11:21.340611+00:00"
      },
      {
         "value":"xyz",
         "created_on":"2020-02-07 06:11:21.340611+00:00"
      }
   ],
   "score":[
      {
         "value":12,
         "created_on":"2020-02-06 06:11:21.340611+00:00"
      },
      {
         "value":13,
         "created_on":"2020-02-07 06:11:21.340611+00:00"
      }
   ]
}
如何形成查询,以便获得给定文档中每个字段的最新更新值。我通过了,但我不知道是怎么回事

我的预期产出是:

{
    "name": "xyz",
    "score": "13"
}

如果您总是将新的/最新的值推送到数组name&score,那么您可以尝试下面的查询,它将从数组中获取最后一个元素,因为通常新的/最新的值将始终作为数组中的最后一个元素添加:

db.collection.aggregate([
    { $addFields: { name: { $arrayElemAt: ['$name', -1] }, score: { $arrayElemAt: ['$score', -1] } } },
    { $addFields: { name: '$name.value', score: '$score.value' } }])

测试:

请显示预期输出和要最大化的字段value@deltaforce:我猜最新的值总是被推送到名称和分数数组?或者,最新的值可以作为对现有记录的更新,而不是向数组中添加新对象吗?@whoami:最新的值将始终被推送到名称和分数数组中,因为我必须维护每个名称和分数的更新历史。@whoami:我仍在处理它。将在我测试并验证后立即接受:)