【问题标题】:MongoDB project nested element in _id field_id 字段中的 MongoDB 项目嵌套元素
【发布时间】:2020-07-30 18:18:25
【问题描述】:

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

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

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

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

  1. "projection":{"_id.B":1}:它返回整个 _id 对象。 _id.A & _id.B.
  2. "projection":{"_id.A":0,"除_id.B以外的所有其他字段":0}:返回同上。
  3. "projection":{"_id.A":0,"_id.B":1}:不返回任何内容。

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

最好的问候,感谢您的宝贵时间。

赫克托

【问题讨论】:

  • 我认为不会。这是针对内存中的驱动程序文档,我的问题是关于存储在 MongoDB 中的文档。不过还是谢谢你。

标签: mongodb mongo-c-driver


【解决方案1】:

您可以在聚合中使用 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

【讨论】:

  • 谢谢。为什么需要一个聚合管道来做这么简单的操作?用基本的find 命令不可能吗?
  • @Héctor :似乎.find() 无法做到这一点..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 2018-03-14
  • 2018-10-06
  • 2020-09-18
相关资源
最近更新 更多