mongodb - Mongo查询,分组数组条目
问题描述
- 我有一个 mongo 集合名称书籍。结构如下。
- 我想知道我是否在我收藏的每本书中复制了任何字符。
例如,在第一本书中重复出现的字符“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} ] }
解决方案
我假设每个文档都有 _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 }
让我知道它是否有效。
推荐阅读
- react-native - 找不到模块'babel-plugin-r'
- python - 从排列中删除连续字符
- python - Matplotlib 位图无法正常工作
- python - Tensorflow 修剪模型与原始基线模型大小相同
- java - 如何将 View 元素从 React Native 传递到 Native Adnroid?
- curl - CURL (23) 写入输出目标失败
- python - 具有选定多列的熊猫 fillna 比其过度循环慢
- sql - 交叉运算符的奇怪 SQL 问题
- ios - 使用 Detox 在 React Native 中测试 Share.share
- html - 如何向此 Parallax 网站添加内容?