如何从查询中排除 id 数组

How to exclude array of ids from query

我有一个 _ids 数组,我想从查询中排除它们:

console.log('relatedCards', relatedCards);
const motherCards = await db.MotherCard.find({ "_id": { $ne : relatedCards } });

但是returns这个错误:

为什么会发生这种情况以及如何解决这个问题?

$ ne 通常用于一个值。但是如果你想排除array中的多个项目,你可以使用$ nin

例如我有这个模型:

{
  "_id": "5a934e000102030405000000",
  "key": 1
},
{
  "_id": "5a934e000102030405000001",
  "key": 2
},
{
  "_id": "5a934e000102030405000002",
  "key": 3
},
{
  "_id": "5a934e000102030405000003",
  "key": 4
},
{
  "_id": "5a934e000102030405000004",
  "key": 5
}

我想排除 key:3key5:

db.collection.find({
key: {
  "$nin": [
    3,
    5
  ]
}
})

现在这个查询return一个正确的结果:

[
  {
    "_id": "5a934e000102030405000000",
    "key": 1
  },
  {
    "_id": "5a934e000102030405000001",
    "key": 2
  },
  {
    "_id": "5a934e000102030405000003",
    "key": 4
  }
]

希望此解决方案对您有所帮助。