我有一个 Mongo db 文档集合,其中包含 _id 、 id1、 id2,其中 (id1, id2) 是唯一的。 我想找到除 (id1, id2 的字典列表) 之外的所有文档。
换句话说,我想要除except_arr之外的所有文件。
文档示例:
{ _id: 1, id1: 25, id2: 1030 },
{ _id: 2, id1: 25, id2: 1031 },
{ _id: 3, id1: 1024, id2: 2048 },
{ _id: 4, id1: 1552, id2: 1284 }
数组示例:
except_arr = [
{id1: 1024, id2: 2048},
{id1: 1552, id: 1284}
]
结果应该是:
{ _id: 1, id1: 25, id2: 1030 },
{ _id: 2, id1: 25, id2: 1031 }
答案 0 :(得分:4)
您要查找的名称为 $nor
db.collection.find({
$nor: [
{
id1: 1024,
id2: 2048
},
{
id1: 1552,
id2: 1284
}
]
})
答案 1 :(得分:0)
在查看我评论的代码并查看 Mohamad 所说的内容后,我得到了这个解决方案:
db.getCollection('test').find({
$or: [
{ id1: { $nin: [1024, 1552] } },
{ id2: { $nin: [2048, 1284] } }
]
})
我的数据库对象:
[
{ _id: 1, id1: 25, id2: 1030 },
{ _id: 2, id1: 25, id2: 1031 },
{ _id: 3, id1: 1024, id2: 2048 },
{ _id: 4, id1: 1552, id2: 1284 },
{ _id: 5, id1: 1024, id2: 3 },
{ _id: 6, id1: 4, id2: 1284 }
]
结果:
[
{ _id: 1, id1: 25, id2: 1030 },
{ _id: 2, id1: 25, id2: 1031 },
{ _id: 5, id1: 1024, id2: 3 },
{ _id: 6, id1: 4, id2: 1284 }
]
编辑
下面是一个具有不同 id1 和 id2 的示例
*要测试的在线游乐场:https://mongoplayground.net/p/2vQyTkpgHNI
我的收藏: