【发布时间】:2018-07-03 10:41:42
【问题描述】:
我尝试使用$in 查询文档并传递一个 ID 数组。
在这次测试中,我得到了预期的值。
Document.find({
documentId: {
$in: ['598eb5a9957d7427f41d7f08',
'5a5d863cf9d4d74f2b3d3180'
]
}
}).then(data => {
console.log(data);
});
但是当使用这个时,我得到的只是一个空的结果。
Document.aggregate([{
$match: {
documentId: {
$in: ['598eb5a9957d7427f41d7f08',
'5a5d863cf9d4d74f2b3d3180'
]
}
}
}]).then(data => {
console.log(data);
});
如果我将 id 显式转换为 ObjectId,我可以修复它。
Document.aggregate([{
$match: {
documentId: {
$in: [
new mongoose.Types.ObjectId(
'598eb5a9957d7427f41d7f08'
),
new mongoose.Types.ObjectId(
'5a5d863cf9d4d74f2b3d3180'
)
]
}
}
}]).then(data => {
console.log(data);
});
有什么建议为什么会发生这种情况?
我想省略关于转换 objectId 的最后一个代码的查询。
谢谢。
【问题讨论】:
标签: mongodb mongoose aggregate objectid