对于此类文档分组,请在MongoDBgregation()中使用$group。让我们创建一个包含文档的集合-
> db.demo602.insertOne({id:1,Name:"Chris"});{ "acknowledged" : true, "insertedId" : ObjectId("5e960080ed011c280a0905c9") } > db.demo602.insertOne({id:2,Name:"David"});{ "acknowledged" : true, "insertedId" : ObjectId("5e960086ed011c280a0905ca") } > db.demo602.insertOne({id:1,Name:"Bob"});{ "acknowledged" : true, "insertedId" : ObjectId("5e96008ced011c280a0905cb") } > db.demo602.insertOne({id:3,Name:"Mike"});{ "acknowledged" : true, "insertedId" : ObjectId("5e960092ed011c280a0905cc") } > db.demo602.insertOne({id:2,Name:"John"});{ "acknowledged" : true, "insertedId" : ObjectId("5e960099ed011c280a0905cd") } > db.demo602.insertOne({id:1,Name:"Sam"});{ "acknowledged" : true, "insertedId" : ObjectId("5e9600a1ed011c280a0905ce") }
在find()方法的帮助下显示集合中的所有文档-
> db.demo602.find();
这将产生以下输出-
{ "_id" : ObjectId("5e960080ed011c280a0905c9"), "id" : 1, "Name" : "Chris" } { "_id" : ObjectId("5e960086ed011c280a0905ca"), "id" : 2, "Name" : "David" } { "_id" : ObjectId("5e96008ced011c280a0905cb"), "id" : 1, "Name" : "Bob" } { "_id" : ObjectId("5e960092ed011c280a0905cc"), "id" : 3, "Name" : "Mike" } { "_id" : ObjectId("5e960099ed011c280a0905cd"), "id" : 2, "Name" : "John" } { "_id" : ObjectId("5e9600a1ed011c280a0905ce"), "id" : 1, "Name" : "Sam" }
以下是聚合不同文档中具有相似ID的元素的查询-
> db.demo602.aggregate([ ... { $group: { ... '_id': {id:"$id", "Name" : "$Name"}, ... "count" : { "$sum": 1 } ... }}, ... { $group: { ... '_id': "$_id.id", ... "ListOfName" : {"$push" : {Name:"$_id.Name", Frequency: "$count"}} ... }}, ... ], ... {'allowDiskUse': true} ... );
这将产生以下输出-
{ "_id" : 2, "ListOfName" : [ { "Name" : "John", "Frequency" : 1 }, { "Name" : "David", "Frequency" : 1 } ] } { "_id" : 3, "ListOfName" : [ { "Name" : "Mike", "Frequency" : 1 } ] } { "_id" : 1, "ListOfName" : [ { "Name" : "Sam", "Frequency" : 1 }, { "Name" : "Bob", "Frequency" : 1 }, { "Name" : "Chris", "Frequency" : 1 } ] }
我在使用聚合框架从MongoDB读取文档时遇到了问题:我的结果中总是得到空ID。这只发生在具有复合ID的文档中。我尝试了各种版本的spring-data-mongob(1.10.12, 2.0.7),结果相同。 实体定义类 测试代码 输出 调试到以下方法MappingMongoConverter。read(final mongopersistenentity entity、final Docume
问题内容: 我有这些猫鼬模式: 如何返回所有带有最新消息子文档(限制1)的线程? 目前,我正在服务器端过滤结果,但出于性能考虑,我想在MongoDb中移动此操作。 问题答案: 您可以使用,,并使用类似以下方式进行操作:
问题内容: 映射: 分行文件: 员工证件: 我想查找具有父ID的文档,我尝试了以下查询: 但是ES没有返回结果。如何在Elasticsearch中搜索具有相同父ID的子文档? 问题答案: 将在OP。有无效是没有叫父在外地类型。 以下是有效查询的示例:
在我的身体里我有3
第一个名为的文档包含以下文档(不包括): 第二个集合名为,具有以下文档: 上的 预期的结果是: 如何使用聚合查询来实现这一点?
问题内容: 我有一个看起来像这样的架构: 我想找到b的所有值,其中b的值由2个或更多实体共享: 查询依据: 应该返回和。 问题答案: 您可以使用2 的字段对字段进行聚合,然后添加子聚合以找到匹配的字段: