我正在尝试运行下面的查询。update.keywords和update.genre是字符串数组。我使用的是MongoDB v4.4.0
let similar = await VideoSchema.find(
{ _id: { $ne: id } },
{
$or: [
{ influencerId: update.influencerId },
{ category: update.category },
{ keywords: { $in: [...update.keywords] } },
{ genre: { $in: [...update.genre] } },
],
}
);我提到了这个答案,但我没有在我的查询中使用'$expr'。如何使用此查询查找所有相似的视频。如果我尝试使用{ $in: [ <expression>, <array expression> ] },它会显示另一个错误,即MongoError: FieldPath field names may not start with '$'.
发布于 2020-08-17 21:43:11
问题是你用大括号把or括起来了。
find的语法为db.coll.find(findCondition}, {projection})
如果要执行查询,可以向其传递id and和or query。
VideoSchema.find(
{ $and: [
{_id: { $ne: id }},
{$or: [
{ influencerId: update.influencerId },
{ category: update.category },
{ keywords: { $in: [...update.keywords] } },
{ genre: { $in: [...update.genre] } },
] }
]}
);否则,将其添加到find条件的部分中。它是OR条件。
VideoSchema.find(
{ _id: { $ne: id },
$or: [
{ influencerId: update.influencerId },
{ category: update.category },
{ keywords: { $in: [...update.keywords] } },
{ genre: { $in: [...update.genre] } },
]
}
);https://stackoverflow.com/questions/63450892
复制相似问题