Tag: aggregation framework

MongoDB的$ in子句是否保证顺序?

当使用MongoDB的$in子句时,返回的文档的顺序是否总是对应​​于数组参数的顺序?

包括所有现有字段并将新字段添加到文档

我想定义一个$项目汇总阶段,我可以指示它添加一个新的字段,并包含所有现有的字段,而不必列出所有现有的字段。 我的文档看起来像这样,有很多领域: { obj: { obj_field1: "hi", obj_field2: "hi2" }, field1: "a", field2: "b", … field26: "z" } 我想要这样做一个聚合操作: [ { $project: { custom_field: "$obj.obj_field1", //the next part is that I don't want to do field1: 1, field2: 1, … field26: 1 } }, … //group, match, and whatever… ] 有没有像在这种情况下可以使用的“包含所有字段”关键字,或者其他方式来避免分别列出每个字段?

检查数组中的每个元素是否匹配条件

我有一个文件集合: date: Date users: [ { user: 1, group: 1 } { user: 5, group: 2 } ] date: Date users: [ { user: 1, group: 1 } { user: 3, group: 2 } ] 我想查询这个集合来查找所有文档,其中用户数组中的每个用户标识都在另一个数组中[1,5,7]。 在这个例子中,只有第一个文档匹配。 我能find的最佳解决scheme是: $where: function() { var ids = [1, 5, 7]; return this.users.every(function(u) { return ids.indexOf(u.user) !== -1; }); […]

从MongoDB删除重复项

您好,我有一个约500万的文件在mongodb(复制)每个文件的43个领域。 如何删除重复的文件。 我尝试了 db.testkdd.ensureIndex({ duration : 1 , protocol_type : 1 , service : 1 , flag : 1 , src_bytes : 1 , dst_bytes : 1 , land : 1 , wrong_fragment : 1 , urgent : 1 , hot : 1 , num_failed_logins : 1 , logged_in : 1 , num_compromised : 1 […]

MongoDB – 获取集合中每个组的max属性的文档

我的数据如下所示: session, age, firstName, lastName 1, 28, John, Doe 1, 21, Donna, Keren 2, 32, Jenna, Haze 2, 52, Tommy, Lee .. .. 我想要得到每个会话中最大(按年龄)的所有行。 所以对于上面的input,我的输出如下所示: sessionid, age, firstName, lastName 1, 28, John, Doe 2, 52, Tommy, Lee 因为约翰在会议= 1组中的年龄最大,而汤米在会议= 2组中的年龄最大。 我需要将结果导出到一个文件(csv),它可能包含大量的logging。 我怎样才能做到这一点?

聚合后如何取回原始文档

我有一个情况下,我想要查询一个文件的集合有一个数组字段“窗体”下的项目数量。 要解决的问题只是要返回具有“封闭”特定状态的“表单”中包含的所有文档的文档。 所以这里是集合中两个不同文档的示例: { "_id" : "Tvq444454j", "name" : "Jim", "forms" : [ { "name" : "Jorney", "status" : "closed" }, { "name" : "Women", "status" : "void" }, { "name" : "Child", "status" : "closed" }, { "name" : "Farm", "status" : "closed" } ] }, { "_id" : "Tvq579754r", "name" : "Tom", "forms" […]

MongoDB聚合比较:group(),$ group和MapReduce

我有点困惑,何时使用group(),与$ group或mapreduce聚合。 我阅读了http://www.mongodb.org/display/DOCS/Aggregation for group()的文档, http: //docs.mongodb.org/manual/reference/aggregation/group/#_S_group for $ group ..分组唯一的情况是group()不能工作吗? 另外,我感觉到$ group比group()更强大,因为它可以与其他pipe道运算符一起用于聚合框架。$ group与mapreduce比较如何? 我读了一个地方,它不会产生任何临时收集,而mapreduce呢。 是这样吗? 有人可以提供一个插图或引导我到这三个概念一起解释的链接,采取相同的样本数据,所以我可以轻松地比较它们吗? 编辑: 另外,如果你能在这些命令中特别指出新的东西,那么这将是非常棒的。

使用$ lookup操作符的多个连接条件

这是我的collections: collection1: { user1: 1, user2: 2, percent: 0.56 } collection2: { user1: 1, user2: 2, percent: 0.3 } 我想通过'user1'和'user2'来join这两个集合。 结果是这样的: { user1: 1, user2: 2, percent1: 0.56, percent2: 0.3 } 我如何写pipe道?

mongoose聚合$匹配不符合ID的

我想通过ID( 56e641d4864e5b780bb992c6和56e65504a323ee0812e511f2 )显示产品,并在折扣减价后显示价格(如果有的话)。 我可以使用聚合来计算最终价格,但是这将返回集合中的所有文档,如何使其仅返回匹配的id "_id" : ObjectId("56e641d4864e5b780bb992c6"), "title" : "Keyboard", "discount" : NumberInt(10), "price" : NumberInt(1000) "_id" : ObjectId("56e65504a323ee0812e511f2"), "title" : "Mouse", "discount" : NumberInt(0), "price" : NumberInt(1000) "_id" : ObjectId("56d90714a48d2eb40cc601a5"), "title" : "Speaker", "discount" : NumberInt(10), "price" : NumberInt(1000) 这是我的查询 productModel.aggregate([ { $project: { title : 1, price: { $cond: { if: {$gt: ["$discount", […]

$在数组中的ObjectId上查找

对一个ObjectId数组的字段进行$ lookup的语法是什么,而不仅仅是一个ObjectId? 示例订单文档: { _id: ObjectId("…"), products: [ ObjectId("..<Car ObjectId>.."), ObjectId("..<Bike ObjectId>..") ] } 不工作查询: db.orders.aggregate([ { $lookup: { from: "products", localField: "products", foreignField: "_id", as: "productObjects" } } ]) 期望的结果 { _id: ObjectId("…"), products: [ ObjectId("..<Car ObjectId>.."), ObjectId("..<Bike ObjectId>..") ], productObjects: [ {<Car Object>}, {<Bike Object>} ], }