在 mongoDb 中查找包含 2 个字段的所有文档的最佳方法

Best way to find all documents with 2 fields in mongoDb

我需要帮助来查找 mongodb 中的文档。 我的架构如下所示:

const users = new Schema({
      _id: ObjectId,
      facebookId: String,
      .....
      .....
})

我有 2 个数组用于查询,如下所示:

const facebookIds = ['1', '2', '3']
const _ids = ['1', '2', '3']

目前,我正在考虑首先找到所有带有 facebookIds 数组的文档,获取它们的 _id,将结果与 _ids 数组连接,最后找到所有具有结果 _ids 数组的文档。

所以,我想知道一次性查询文档的最佳方式是什么,或者这是唯一的方式。

提前致谢。

假设您在集合中有 3 个用户有 facebookId,另外 3 个没有 facebookId。你已经有了前3个数据的facebookId和后3个数据的_id。

    [
  {
    _id: 1,
      facebookId: 10,
  },
  {
    _id: 2,
      facebookId: 20,
  },
  {
    _id: 3,
      facebookId: 10,
  },
  {
    _id: 4,
      facebookId: null,
  },
  {
    _id: 5,
      facebookId: null,
  },
  {
    _id: 6,
      facebookId: null,
  }
]

您可以为此使用 $or operator and $in 运算符

db.collection.find({
  $or: [
    {
      facebookId: {
        $in: [10,20,30]
      }
    },
    {
      _id: {
        $in: [4,5,6]
      }
    }
  ]
})

这是一个有效的 mongoplayground link