我需要检索让我们使用Mongoose在MongoDB数据库中说明位置1,5和8的文档。 是否可以根据其在集合中的位置获取文档?如果是这样,你能说明怎么做吗?
我需要这样的东西:
var someDocs = MyModel.find({<collectionIndex>: [1, 5, 8]}, function(err, docs) {
//do something with the three documents
})
我尝试执行以下操作以查看在集合中使用了哪些索引,但是我得到了&#39; getIndexes不是函数&#39;错误:
var indexes = MyModel.getIndexes();
感谢任何帮助。
答案 0 :(得分:0)
例如,如果按位置5表示您的集合中的第5个元素,那么这不是最好的方法。 Mongo集合通常按插入元素的顺序排列,但可能并非总是如此。请在此处查看答案并查看natural order
上的文档:https://stackoverflow.com/a/33018164/7531267。
在您的情况下,您可以在每个记录上查找唯一的id
。
假设你提到的[1,5,8]是id
s,这样的事情就应该这样做:
var someDocs = MyModel.find({ $or: [{ id: 1 }, { id: 5 }, { id: 8 }]}}, function(err, cb) {
//do something with the three documents
})
您还可以阅读$in
来替换$or
并稍微清理一下查询。
答案 1 :(得分:0)
假设您在用户集合中包含此文档:
{
_id: ObjectId('...'),
name: 'wrq',
friends: ['A', 'B', 'C']
}
以下代码搜索用户&#39; wrq&#39;
的第一个和第三个朋友db.users.aggregate(
[
{
$match: {
name: 'wrq'
}
},
{
$project:{
friend1: {
$arrayElemAt: ["$friends", 0]
},
friend3: {
$arrayElemAt: ["$friends", 2]
}
}
}
]
)