我试图在MongoDB中编写一个查询,根据字段是否与给定对象部分匹配来提取某些对象。
我的MongoDB集合中的对象看起来与此类似:
{
permissions: {
records: [
"add",
]
}
}
我希望能够通过查询给定用户的权限来检索相关对象。
例如,如果我使用以下对象查询:
{
permissions: {
records: [
"add",
"delete"
],
folders: [
"delete",
]
}
}
我想要从集合中返回与查询对象部分匹配的对象,这可能就是这些:
{
permissions: {
records: [
"add",
]
}
},
{
permissions: {
records: [
"delete",
],
folders: [
"delete",
]
}
}
如果有人能给我任何指导,那就非常感激了!
答案 0 :(得分:1)
我认为这应该有效:
db.tutorials.find({
$or: [
{ "permissions.records": { $elemMatch: { $in: ["add", "delete"] } } },
{ "permissions.folders": { $elemMatch: { $in: ["delete"] } } },
{ "permissions.logs": { $elemMatch: { $in: ["add", "delete"] } } },
{ "permissions" : { $exists: false}}
]
})