MongoDB筛选器集合不包含在另一个集合的数组字段中

MongoDB筛选器集合不包含在另一个集合的数组字段中,mongodb,Mongodb,我需要两个问题来解决下面的问题。第一个我认为更简单,第二个我不确定是否可能,但它更适合我 工作流程: {"_id" 1:, "name": "Workflow 1": "connections": [1, 2]} {"_id" 2:, "name": "Workflow 2": "connections": [3, 4]} 连接: {&

我需要两个问题来解决下面的问题。第一个我认为更简单,第二个我不确定是否可能,但它更适合我

工作流程:

{"_id" 1:, "name": "Workflow 1": "connections": [1, 2]}
{"_id" 2:, "name": "Workflow 2": "connections": [3, 4]}
连接:

{"_id": 1, "name": "Connection 1"}
{"_id": 2, "name": "Connection 2"}
{"_id": 3, "name": "Connection 3"}
{"_id": 4, "name": "Connection 4"}
{"_id": 5, "name": "Connection 5"}
{"_id": 6, "name": "Connection 6"}
1-第一个查询: 如何筛选连接集合以仅检索不在工作流1,2内的连接集合

在这种情况下,查询应返回:

{"_id": 5, "name": "Connection 5"}
{"_id": 6, "name": "Connection 6"}
2秒查询: 如何筛选连接集合以仅检索不在任何工作流中的连接集合?也就是说,在本例中,我不需要任何可能的工作流中都不包含的查询意义连接的工作流列表

这两个查询将返回相同的结果,但第二个查询不需要首先检索工作流列表。

检索连接

  • $lookup
    加入
    工作流
    集合
  • $match
    是否在阵列中匹配连接id
  • $match
    连接
    不是
  • $project
    显示所需字段

@Mauricio没有收到第二个查询,我认为它在这一个查询中就完成了。既然你给了我我所需要的确切查询,我正在检查答案是否正确。但它对我的10GB数据库不起作用,因为它被证明是非常繁重的查询。
db.connection.aggregate([
  {
    $lookup: {
      from: "workflow",
      let: { c_id: "$_id" },
      as: "connections",
      pipeline: [ { $match: { $expr: { $in: ["$$c_id", "$connections"] } } } ]
    }
  },
  { $match: { connections: { $eq: [] } } },
  { $project: { _id: 1, name: 1 } }
])