可以说我有一个与此结构嵌套的文档:

{
    "_id": "a125",
    "Language": null,
    "Name": "Some name",
    "Related": [{
        "_id": "b125",
        "Status": 0,
    }, {
        "_id": "b126",
        "Status": 1,
    }]
}

是否可以使用C#驱动程序选择id为b126的“相关”模型,并同时获取父文档ID(a125)?

我想结果应该像这样:
{
  "_id": "a125",
  "Related": {
     "_id": "b126",
     "Status": 1,
  }
}

最佳答案

您可以将点符号与positional $ 投影运算符一起使用,以找到匹配的文档,并且仅包括匹配的Related元素。

在 shell 中:

db.test.findOne({'Related._id': 'b125'}, {'Related.$': 1})

要在C#中执行此操作:

var filter = Builders<BsonDocument>.Filter.Eq("Related._id", "b125");
var projection = Builders<BsonDocument>.Projection.Include("Related.$");
var result = await collection.Find(filter).Project(projection).FirstAsync();

09-11 17:47