Монго запрос, группировка записей массива - PullRequest
0 голосов
/ 03 июля 2018
  • У меня есть названия коллекций монго книг . Структура следующим образом.
  • Я хочу знать, дублировал ли я какие-либо символы в каждой книге в моей коллекции.
  • Например, в первой книге символ 'anne' повторен. Итак, мне нужно отфильтровать такие записи. Пример:

    { title : 'abc', characters : [ { name : 'Anne',id :2}, { name : 'Suzan', id :1}, { name : 'Anne', id:2} ] } { title : 'xyz', characters : [ { name : 'Anne', id :2}, { name : 'Suzan', id : 1} ] }

1 Ответ

0 голосов
/ 03 июля 2018

Я предполагаю, что для каждого документа есть свойство _id. Вы можете попробовать выполнить запрос ниже:

db.books.aggregate([
  {$project: { _id: 1, characters: 1 } },
  {$unwind: "$characters" },
  {$group: {_id: { _id: "$_id", name: "$characters.name" }, count: { $sum: 1 }}},
  {$match: {"count" : { $gt: 1 }}}
])

Результат должен выглядеть так:

{ "_id" : { "_id" : ObjectId("someid"), "name" : "Anne" }, "count" : 2 }

Дайте мне знать, если это работает.

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