Извлечь только значение в паре ключ-значение в $ project в агрегате mongodb - PullRequest
2 голосов
/ 09 марта 2020

Я использую mon go 3.4

Я использую функцию агрегирования mongodb. Моя проблема в том, что в $ project у меня есть значение

{ $project: {
  "_id": 1,
  "name":1 ,
  ............
  ............
  "partners.address.country": 1,
  "partners.partnerName": 1,
} },
{ $match: matchCondition
}

В результате я получаю значение как

"partners": {"address": {"country": ""}}

Я не хочу, чтобы я просто хотел это как

"partners": {"country": ""}

Я хочу пропустить часть адреса. Кроме того, я не хочу использовать .map функцию после результата, так как у меня большие данные в $ project . Кто-нибудь может помочь?

У меня есть еще один запрос, этот запрос является объединением 4 коллекций (2 других, которые я не упомянул вышеупомянутый пример). Мне нужна вся запись моей основной коллекции и только 2-3 записи других коллекций, поэтому я должен записать каждую запись в $ project и установить ее равной 1. Есть ли способ пропустить запись каждой записи? и каждая запись в $ project, и все же мы можем получить запись в нашем результате? Пожалуйста, помогите мне! Заранее спасибо

1 Ответ

2 голосов
/ 09 марта 2020

Вы можете попробовать, как показано ниже:

db.collection.aggregate({
  $project: {
    name: 1,
    "partners.country": "$partners.address.country", // a new field(country) will be created & a value will be assigned from given field
    "partners.partnerName": 1
  }
})

Тест: MongoDB-Playground

...