在 Mongodb C# 中获取有关同一集合的其他数据

get additional data on same collection in Mongodb C#

我有一个名为“用户”的集合。我正在传递 userid 以获取记录。除此之外,我还需要额外的 10 个 last updatedAt(DateTime) 记录,不包括 userid 记录但加在一起。因此,在这种情况下,总返回结果将为 11。是否可以使用相同的查询?我尝试使用 Or 和 lookup 但无法使其按预期工作。 感谢任何帮助。

 User collection:
[{
     "id" : "123456", 
    "name" : "foo", 
    "addressIds" : [ObjectId(234567)]
  }     ,
    "id" : "345678", 
    "name" : "bar", 
    "addressIds" : [ObjectId(678565), ObjectId(567456)]
   }]

 Address collection:
 [{
 "_id":"234567",
 "district" : "district1", 
 "pincode" : "568923",
  },
  {
 "_id":"678565",
 "district" : "district2", 
 "pincode" : "568924",
  },
  {
 "_id":"567456",
 "district" : "district3", 
 "pincode" : "568925",
 }]

使用构面,我有用户和地址 ID。我可以在用户中获得 AddressIds 的实际文档吗?

编辑: 您可以使用 $facet,像这样:

db.collection.aggregate([
  {$sort: {date: -1}},
  {$facet: {
      byTate: [{$limit: 10}],
      byUser: [{$match: {userId: 455845}}]
    }
  },
  {$project: {
    byDate: {
        $filter: {
            input: "$byDate",
            as: "item",
            cond: {$ne: ["$$item",{"$arrayElemAt": ["$byUser", 0]}]}
        }
    },
    byUser: 1,
    }
  },
  {
    $project: {
      byDate: {$slice: ["$byDate", 10]},
      byUser: 1
    }
  }
])

您可以看到它在 playground 上有效。

在 userId 之间切换:455845 / 455845 以查看两种情况。