Mongo查询,对数组条目进行分组

时间:2018-07-03 12:16:54

标签: mongodb

  • 我有一个mongo馆藏名称, books 。结构如下。
  • 我想知道我是否在藏书中的每本书中都重复了任何字符。
  • 例如,在第一本书中,重复字符'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 :(得分:0)

我假设每个文档都有_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 }

让我知道它是否有效。