我在MongoDB中有一个结构如下:
[
{
"_id": ObjectId("51bf000a3d489f2df59aa4c6"),
"courses": ["course1", "course2"]
}, {
"_id": ObjectId("52cc789a4df828450c16e52c"),
"courses": ["course3", "course4"]
}
]
我希望能够使用["course1", "course3"]
这样的数组查询这两个文档,其中"course1"
与第一个匹配,"course3"
匹配第二个文档。
如果没有像这样的复杂查询,这可能吗?
{
"$or": [
{ "courses": "course1" },
{ "courses": "course3" }
]
}
抱歉我的英语不好!
答案 0 :(得分:0)
以下查询等于您:
db.coll.find({ courses: { $in: ["course1", "course3"] } })
答案 1 :(得分:0)
如果您想进一步处理结果集,您还可以使用聚合并根据需要调整结果。
db.courses.aggregate([
{$unwind:"$courses"},
{$match:{$or:[{courses:"course1"},{courses:"course3"}]}},
{$project:{_id:0, courses:1}}
]);
或使用$ in运算符,如下所示:
db.courses.aggregate([
{$unwind:"$courses"},
{$match:{courses:{$in:["course1","course3"]}}},
{$project:{_id:0, courses:1}}
])