如何查询mongodb以获取基于嵌套参数的值的结果?
我第一次与MongoDB合作 我有一个集合,其每个文档在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
{
"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:我仍在处理它。将在我测试并验证后立即接受:)