【发布时间】:2019-12-18 05:42:45
【问题描述】:
所以基本上我需要用我自己的过滤器过滤我的数据,它是字符串数组,但问题是,那个确切的字段是在 DB 数组中的嵌套对象内。所以,我的 Schema 的一部分看起来像这样:
members: [
{
_id: { type: Schema.Types.ObjectId, ref: "Users" },
profilePicture: { type: String, required: true },
profile: {
firstName: { type: String },
lastName: { type: String },
occupation: { type: String },
gender: { type: String }
}
}
]
我的过滤器看起来像这样
gender: ["male","female"]
使用此过滤器的预期结果是得到一个既有男性用户又有女性用户的团队,如果它只有男性或只有女性,它不应该给我那个团队。但我所尝试的一切都给了我包括男性和女性在内的一切,即使只有男性成员。
我尝试过的:
db.teams.find(members: { $elemMatch: { "profile.gender": { $in: gender } } })
这仅在过滤器中指定了一种性别时才有效,而且我知道它一定不适用于我想要实现的目标,但我不知道如何实现它。任何帮助将不胜感激
编辑:我尝试过以这种方式进行操作
db.teams.find({
$and: [
{ members: { $elemMatch: { "profile.gender": gender[0] } } },
{ members: { $elemMatch: { "profile.gender": gender[1] } } }
]
})
这只有在指定两个过滤器时才会给我结果,但是,如果只有一个过滤器(“男性”或“女性”),它不会给我任何东西。
【问题讨论】:
标签: mongodb mongodb-query