MongoDB Fluent界面。尝试投影子文档属性,而忽略父文档属性 - c#

我有一个包含子文档的父文档(它不是数组,只是1:1关系)。

{
  _id: ObjectId(....)
  prop1 : value1
  prop2 : value2
  subdoc : {
    subProp1 : subPropValue1
    subProp2 : subPropValue2
  }
}

我正在尝试使用Projection仅包括subProp1和subProp2。我可以通过MongCLI进行此工作,但不能在C#(流畅的界面)中进行等效的工作。我尝试过像将投影链接在一起(排除和包含)这样的愚蠢行为。但是后者优先于前者。最终,我希望将子文档的内容映射到C#实体对象。

因此,将创建投影:Builders.Projection.Exclude(..)。Exclude().....
还尝试通过BsonDocument创建投影。

collection.Find<BsonDocument>(filter).Project("{ _id:0, prop1:0, prop2:0, subdoc : { subprop1:1, subprop2:1 }}")

任何指针将不胜感激。
谢谢。

参考方案

当包含(0)个其他字段时,不需要排除(1)个字段。 _id字段是一个例外,可以在包含其他字段的同时将其排除。

另外请记住,最好将点号用于嵌套的点号,

您的C#代码如下所示:

collection.Find<BsonDocument>(filter).Project("{ _id:0, 'subdoc.subProp1':1, 'subdoc.subProp2':1 }")

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

如何使用C#仅从多层嵌入式MongoDB文档中获取具有相应父元素的确切子元素 - c#

尝试使用C#从嵌入式MongoDB文档中获取确切的子文档及其对应的父文档,但查询返回所有子文档以及对应的父文档和其他文档。如何将参数设置为使用Filter和findOptions获得完全匹配。我的预期结果是频道1->第1集,并且是给定ID的Child Track。这是我的代码:// Class namespace CrudWithMultilvelNe…

MongoDB组到C#API - c#

我有以下mongoDB订单集合,需要将它们分组在C#应用程序中: [ { _id: 123, status: [{ Detail: 'Started', Origin: 'France', Last: true }] }, { _id: 456, status: [{ Detail: 'Received�…

使用MongoDB和C#在数组中查询深度嵌套的对象 - c#

我对MongoDB相当陌生,已经面临着艰巨的挑战。我正在尝试从具有对象的数组中的对象中获取一个元素(如果有道理)。这是文档的外观以及我要获取的内容:因此,基本上结构如下:选项菜单OptionMenuSubjectOptionMenuItem为了获得我匹配的OptionMenuItem,使用MongoDB Compass工具中的聚合管道工具将其拉下[{ $un…

更改以字符串形式存储在MongoDB中文档中的枚举值 - c#

我有一个类,里面有一个枚举属性。保存整个文档时,由于以下文档的.NET表示形式中的属性,该属性以字符串形式写入数据库。public enum Status { Good, Bad } public class Document { [BsonRepresentation(BsonType.String)] public Status Status { get…