在我的数据库中,有一个名为SetVoca的集合,其结构如下:
{
"_id" : ObjectId("5e63518c3e5d0d08980e2203"),
"lessonId" : "5e63518c3e5d0d08980e2201",
"vocaList" : [
{
"_id" : ObjectId("5e6351e43e5d0d08980e2207"),
"word" : "a",
"type" : "a",
"meaning" : "a",
"sente" : "a",
"semean" : "a",
"sug" : "a"
},
{
"_id" : ObjectId("5e6351eb3e5d0d08980e2208"),
"word" : "b",
"type" : "b",
"meaning" : "b",
"sente" : "b",
"semean" : "b",
"sug" : "b"
}
],
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("5e6351be3e5d0d08980e2206"),
"lessonId" : "5e6351be3e5d0d08980e2204",
"vocaList" : [
{
"_id" : ObjectId("5e6351f63e5d0d08980e2209"),
"word" : "c",
"type" : "c",
"meaning" : "c",
"sente" : "c",
"semean" : "c",
"sug" : "c"
}
],
"__v" : 0
}我现在将vocaList字段中的ObjectId值分散到一个数组中,如下所示:
const vocaIds = ['5e6351e43e5d0d08980e2207', '5e6351eb3e5d0d08980e2208', '5e6351f63e5d0d08980e2209']现在,我希望根据保存在vocaIds数组中的Ids检索分散在vocaList字段中的对象。我试着这样编写它:
app.get('/saved-find', (req, res) => {
SetVoca.find({ 'vocaList': { '_id': { $in: vocaIds } } }, (err, result) => {
console.log(result);
});
});不幸的是,它不工作,所以我应该修复它来运行它。非常感谢。
发布于 2020-03-07 22:24:37
您需要将ids封装在ObjectId中,如下所示
const vocaIds = [mongoose.Types.ObjectId('5e6351e43e5d0d08980e2207'), mongoose.Types.ObjectId('5e6351eb3e5d0d08980e2208'), mongoose.Types.ObjectId('5e6351f63e5d0d08980e2209')]在查询中,如下所示
SetVoca.find({ 'vocaList._id': { $in: vocaIds } }, (err, result) => {
console.log(result);
});https://stackoverflow.com/questions/60578194
复制相似问题