我有一个_id数组,我想相应地得到所有的文档,最好的方法是什么?
就像...
// doesn't work ... of course ...
model.find({
'_id' : [
'4ed3ede8844f0f351100000c',
'4ed3f117a844e0471100000d',
'4ed3f18132f50c491100000e'
]
}, function(err, docs){
console.log(docs);
});
数组可能包含数百个_id。
9条答案
按热度按时间7xzttuei1#
mongoose中的
find
函数是一个对mongoDB的完整查询,这意味着您可以使用方便的mongoDB$in
子句,它的工作原理与相同的SQL版本相同。这个方法即使对于包含数万个id的数组也能很好地工作。(参见Efficiently determine the owner of a record)
我建议任何使用
mongoDB
的人通读优秀的Official mongoDB Docsoipij1gg2#
Ids是对象ID的数组:
使用带有回调的Mongoose:
使用Mongoose和异步函数:
或者更简洁些:
不要忘记使用实际模型更改“模型”。
mkshixfv3#
结合丹尼尔和snnsnn的答案:
简单明了的代码。它的工作原理和测试对象:
2wnc66cl4#
使用此查询格式
qybjjes15#
在mongoDB v4.2和mongoose 5.9.9中,这段代码对我来说很好用:
并且Id可以是
ObjectId
或String
类型knpiaxh16#
node.js和MongoChef都强制我转换为ObjectId,这是我用来从数据库中获取用户列表并获取一些属性的方法,请注意第8行的类型转换。
r6hnlfcb7#
如果使用的是async-await语法,则可以使用
sq1bmfud8#
我试过下面的方法,它对我很有效。
lokaqttq9#
我 使用 这个 查询 来 查找 mongo GridFs 中 的 文件 。 我 想 通过 它 的 Id 来 获取 。
对 我 来说 , 这个 解决 方案 很 有效 :
Ids type of ObjectId
.中 的 每 一 个
这 是 行不通 的 :
Id type of string
格式