MongoDB Свободный интерфейс. Попытка проецировать свойства вложенных документов, игнорируя при этом свойства родительских документов - PullRequest
2 голосов
/ 04 мая 2020

У меня есть родительский документ, который содержит вложенный документ (это не массив, а отношение 1: 1).

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

Я пытаюсь использовать проекции для включения только subProp1 и subProp2. Я могу заставить это работать через MongCLI, но не могу заставить работать эквивалент в C# (свободный интерфейс). Я пробовал глупость, как связывание проекций (исключить и включить). Но позднее отвергает первое. В конце концов я бы хотел сопоставить содержимое вложенного документа с объектом C# Entity.

Проекции создаются следующим образом: Builders.Projection.Exclude (..). Exclude () ..... Также пытались создавать проекции с помощью BsonDocument.

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

Любые указатели будет принята с благодарностью. Спасибо.

1 Ответ

0 голосов
/ 05 мая 2020

Вам не нужно исключать (0) поля, когда вы включаете (1) другие поля, это либо / или. Поле _id является исключением, и его можно исключить, в то время как другие поля включены.

Также имейте в виду, что лучше использовать точечную запись для вложенных,

Ваш C# код может выглядеть так:

collection.Find<BsonDocument>(filter).Project("{ _id:0, 'subdoc.subProp1':1, 'subdoc.subProp2':1 }")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...