我是MongoDB的新手。在我的收藏中,我有一组数据。在用户端,我还有一个数组。我希望将用户端数组与集合数组相匹配。如果任何元素与集合数组数据相匹配,则应将其视为结果。以下是我的收藏:
{
"_id": {
"$oid": "5f5b2f728cae440be88437f0"
},
"course": ["5f378f6aaf169e22d01d32d4", "5f2ba101f012a62ed011f3ae"],
"access": 1,
"status": 1,
"title": "Simplification",
"createdAt": {
"$date": "2020-09-11T08:04:02.896Z"
},
"updatedAt": {
"$date": "2020-09-11T08:04:02.896Z"
},
"__v": 0
}
假设我在用户端有一个数组,比如:-
var my_courses=["5f378f6aaf169e22d01d32d4","5f6449e726f13210b026635d"];
我想将此数组与集合课程列数组相匹配。数组元素与集合匹配,或者访问权限应为0。
这是我的mongo查询:-
const videos=await Vimeo_Videos
.find({status: 1},'$and':[ { '$and':[ { course: { '$elemMatch': {'$eq':'5f378f6aaf169e22d01d32d4' } } } ],'$or': [ { access: 0 } ] } ] }).limit(4)
如何在查询中运行循环以将所有数组元素与集合数组相匹配?请给我建议解决方案,我该怎么做。
如果你确定数组中的元素,你可以这样写-
{ course: {$all:['5f378f6aaf169e22d01d32d4','5f6449e726f13210b026635d']} }
所以,你的代码应该是-
const videos=await Vimeo_Videos.find({ course: {$all: '5f378f6aaf169e22d01d32d4','5f6449e726f13210b026635d']} })
不确定这是否是你想要的。希望对你有所帮助!