Вложенный элемент проекта MongoDB в поле _id - PullRequest
0 голосов
/ 17 апреля 2020

Я застрял в чем-то очень глупом, но не могу выбраться из своего.

MongoDB v4.2, и у меня есть коллекция с такими документами:

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

Я работаю поверх драйвера mon go - c и хочу запросить только поле "_id.B", но я не знаю, как мне это сделать. Я пытался:

  1. "проекция": {"_ 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, но не здесь.

С уважением, спасибо за ваше время.

Héctor

1 Ответ

1 голос
/ 17 апреля 2020

Для этого вы можете использовать $ project в MongoDB. Вы также можете использовать $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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...