MongoDB _id 字段中的项目嵌套元素

MongoDB project nested element in _id field

我陷入了一些非常愚蠢的事情,但我无法摆脱自己的困境。

MongoDB v4.2 我有一个包含这样的文档的集合:

{"_id":{"A":"***","B":0}}, "some other fields"...

我在 mongo-c 驱动程序之上工作,我只想查询“_id.B”字段,但我不知道该怎么做。我试过:

  1. "projection":{"_id.B":1}: 它 returns 我整个 _id 对象。 _id.A & _id.B.
  2. "projection":{"_id.A":0,"All other fields except _id.B":0}: Returns同上。
  3. "projection":{"_id.A":0,"_id.B":1}: Returns 没有。

当这个对象在 _id 字段中时,我如何才能只获取一些对象元素?第一个选项适用于不在 _id 字段内但不在此处的对象。

此致,感谢您的宝贵时间。

赫克托

您可以在聚合中使用 MongoDB 的 $project 来执行此操作。您还可以使用 $addFields_id.B 放入新字段 + 文档中的所有其他字段并最终投射 _id :0.

代码:

var coll = localDb.GetCollection("yourCollectionName"); 

var project = new BsonDocument 
{ 
    { 
        "$project", 
        new BsonDocument 
            { 
                { "_id.B": 1 }
            } 
    } 
}
var pipeline = new[] { project };
var result = coll.Aggregate(pipeline);

测试: MongoDB-Playground