如何在MongoDB中查询数组中的第一个和最后一个对象



那么,我有一个像这样的对象数组:

"coordinates":[
{
"action":"charge",
"position":{
"city":"City A"
}
},
{
"action":"charge",
"position":{
"city":"City B"
}
},
{
"action":"discharge",
"position":{
"city":"City C"
}
},
{
"action":"discharge",
"position":{
"city":"City D"
}
},
(...)
]

这个数组有N个对象,所以我不知道数组中对象的总数

我的问题是:如何从坐标数组的对象位置查询第一个和最后一个城市?我是这样做的:

db.find({
'coordinates.0.position.city': city_first_name, 
'coordinates.position': {'$elemMatch': {'city': city_last_name}
}, 
{
'coordinates.$.position': {'$slice': -1}})
})

但是效果并不好。它会获取第一个位置,但会获取任何对象的任何部分中的任何元素。我应该使用聚合还是有其他方法使用find?

谢谢你的帮助。

db.collection.aggregate([
{
"$project": {
"f": {
"$slice": [//Firsgt
"$a",
1
]
},
"l": {
"$slice": [//Last
"$a",
-1
]
}
}
}
])

您可以使用$slice$project

游乐场

相关内容

  • 没有找到相关文章

最新更新