是否可以在数组上进行mongo查询并在查询中给出顺序?
我正在寻找的东西例如:
集合对象-我们称之为Route
:
[{
name: 'Route 1',
start: ISODate('date'),
stops: ['stop1Id', 'stop2Id', 'stop3Id', 'stop4Id']
},
{
name: 'Route 2',
start: ISODate('date'),
stops: ['stop4Id', 'stop3Id', 'stop2Id', 'stop1Id']
}];
现在,我想进行查询,在其中可以指定要从stop4Id
到stop2Id
的位置。我可以在一个查询中做类似的事情吗?
Route.find({
// where stop4Id.index < stop2Id.index
});
编辑: 因此,结果(来自示例)将仅返回第二条路线。因为第一个停靠的顺序相反。
答案 0 :(得分:1)
您可以将$indexOfArray
连同$expr
一起使用
db.collection.find({
"$expr": {
"$gt": [
{ "$indexOfArray": ["$stops", "stop2Id"] },
{ "$indexOfArray": ["$stops", "stop4Id"] }
]
}
})
[
{
"_id": ObjectId("5a934e000102030405000001"),
"name": "Route 2",
"stops": [
"stop4Id",
"stop3Id",
"stop2Id",
"stop1Id"
]
}
]