Tag: aggregation framework

Mongoose Aggregation匹配一个objectIds数组

我有一个模式,看起来像这样 var Post = new mongoose.Schema({ author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, created: { type: Date, Default: Date.now }) 我也有一个用户表。 我有一个用户ID的数组,我试图search基于用户ID数组的post表 例如 var userIds = ["575e96652473d2ab0ac51c1e","575e96652473d2ab0ac51c1d"] …. and so on 我想返回这些用户创build的所有post。 post应该按创builddatesorting。 有没有办法根据提供的用户ID分组这个职位,基本上匹配个人用户的职位? 我试图达到的结果是这样的: [{ userAId : "56656…..", post : [postA, postB], },{ userBId :"12345…", post : [postA, postB] }] 我如何编写这个查询? 这是我迄今为止 Post.aggregate([{ // […]

返回mongoDB中基于字段x的第一个字节x按ytypes分组的logging

如果我有以下json结构: [ { id: 1, type: "Drinks", isActive : "true", location: "QLD" }, { id: 2, type: "Drinks", isActive : "false", location: "NSW" }, { id: 3, type: "Drinks", isActive : "true" location: "QLD" }, { id: 3, type: "Drinks", isActive : "false" location: "QLD" }, { id: 3, type: "Drinks", isActive : "true" location: […]

mongoose:聚合和计数

我有一个NodeJS / MongoDB应用程序,其数据存储在一个名为"Feedback"的集合中。 数据如下所示: [ { "__v": 0, "_id": "57d6b2d09f46ca14440ac14e", "customerFeedback": [ { "_id": "57d6b2d09f46ca14440ac14f", "answer": [ { "_id": "57d6b2d09f46ca14440ac150", "answerValue": "cat", "answerWeight": 0 } ], "question": "What is your favourite thing about this shop?", "questionId": "57d65edc0132461120fa0afd" }, { "_id": "57d6b2d09f46ca14440ac151", "answer": [ { "_id": "57d6b2d09f46ca14440ac152", "answerValue": "Okay", "answerWeight": 0 } ], "question": "How was […]

节点与mongoose聚合和总和嵌套字段

当我对我的集合进行查询时 models.Project.find(function(err, result) { //result = doc below }).populate('media') …我得到这个结果: { _id: 57f36baa6cf34d079c8474a0, code: 'ZMIA', __v: 0, media:[ { _id: 57f36bb26cf34d079c847766, project_code: 'ZMIA', amount: 228, __v: 0 }, { _id: 57f36bb26cf34d079c84775c, project_code: 'ZMIA', amount: 250, __v: 0 } ] }, { _id: 57f36baa6cf34d079c8474a1, code: 'ZMJU', __v: 0, media: [] } media是一个参考领域。 如何将嵌套的媒体对象(如果存在)聚合到$sum amount字段并将结果按project_code分组?

查询MongoDb以从引用ID数组上的集合中获取计数

我共有3个集合:1.用户2.职位3.行动 我的collections看起来像这样: 用户: { "_id" : ObjectId("57ee65fef5a0c032877725db"), "fbId" : "EAAXZA4sZCZBKmgBAKe0JpJPrp7utWME6xbHT9yFD", "name" : "Aftab", "email" : "xxxe@hotmail.com", "gender" : "male", "__v" : NumberInt(0), "updatedAt" : ISODate("2016-10-10T05:11:35.344+0000"), "score" : NumberInt(90) } 动作: { "_id" : ObjectId("57f7a0ba3a603627658afdd3"), "updatedAt" : ISODate("2016-10-07T13:18:50.815+0000"), "createdAt" : ISODate("2016-10-07T13:18:50.815+0000"), "userId" : ObjectId("57ee65fef5a0c032877725db"), "postId" : ObjectId("57f4b5e98899081203883a1b"), "type" : "like" } { "_id" : ObjectId("57f7a0ba3a603627658afdd4"), "updatedAt" […]

查询依赖数组大小与值匹配的文档

我有以下架构: Collection1 name slug Collection2 name slugCollection1 Collection1和Collection2之间的“连接”是通过字段slug和slugCollection1 。 我尝试使用MongoDB的聚合框架实现一个请求,以获取具有特定名称和Collection2types的依赖元素数量的Collection1所有元素。 我可以通过$project获得提示: [ { "$lookup": { "from": "Collection2", "localField": "slug", "foreignField": "slugCollection1", "as": "elements" } }, { "$project": { "_id": 0, "id": "$id", "name": 1, "slug": 1, "elementsNumber": { "$size": "$elements" } } } ] 但是我不能将elementsNumber字段稍后用于$match 。 我想这是因为它不是Collection1的字段部分。 有没有一种方法来实现这样的查询? 谢谢!

如何使用Mongoose Aggregation FrameWork对数组元素进行分组

我有以下Mongoose模式: EmployeeSchema: var EmployeeSchema = new Schema({ name : String, employeeDetailsId: { type: Schema.Types.ObjectId, ref: 'employeedetails' } }); EmployeeDetailSchema: var EmployeeDetailSchema = new Schema({ employeeId: { type: Schema.Types.ObjectId, ref: 'employee' }, statusId: { type: Schema.Types.ObjectId, ref: 'status' }, primarySkills: [ { type: Schema.Types.ObjectId, ref: 'skills' }] }); SkillsSchema: var SkillsSchema = new Schema({ name: { […]

用“$ arrayElemAt”投影返回的元素

如果我在这里混淆了一些术语,请原谅我,但是我正在使用'$ lookup'操作符在聚合中执行连接操作,如下所示: db.collection('items').aggregate([{$match: {}}, { $lookup: { from: 'usr', localField: 'usr._id', foreignField: '_id', as: '__usr' } }, { $project: { info: 1, timestamp: 1, usr: { "$arrayElemAt": [ "$__usr", 0 ] } } }], (err, result) => { res.json(result); db.close(); }); 我在聚合结果上执行投影,我使用'$ arrayElemAt'从结果数组中提取单个'usr'匹配。 出于显而易见的原因,我不想返回包含敏感信息的整个“usr”logging。 我正在做的是对使用'$ arrayElemAt'操作返回的元素执行投影。 我能够做到这一点的唯一方法是使用原始投影的额外投影,如下所示: db.collection('items').aggregate([{$match: {}}, { $lookup: { from: 'usr', localField: […]

如何通过mongoose中的模式属性进行过滤

我有一个group对象,它包含一个members属性。 members属性是一个对象数组。 该对象具有以下属性。 {"id" : "1", "status" : 1} 我的要求是获得给定group对象的状态为1的用户列表(通过给定的ID)。 这是可能做到的,用一个简单的ID查询和一个foreach 。 但是想知道,是否有任何提前查询来做到这一点。 我的整体组对象如下。 var UserSchema = new Schema({ user_id:{ type : Schema.ObjectId, ref : 'User', default : null }, status:{ type : Number, default : null /* 1 – pending | 2 – rejected | 3 – accepted*/ }, }); var GroupSchema = new […]

Mongo DB +与最后一个字段的数据

我有collections中的示例json数据。 样本数据: [{ "_id" : 1, "username" : "abcd", "createdDate" : ISODate("2016-06-03T08:52:32.434Z") }, { "_id" : 2, "username" : "abcd", "createdDate" : ISODate("2016-05-03T09:52:32.434Z") }, { "_id" : 3, "username" : "abcd", "createdDate" : ISODate("2016-04-03T10:52:32.434Z") }, { "_id" : 4, "username" : "xyz", "createdDate" : ISODate("2016-03-03T10:52:32.434Z") },{ "_id" : 5, "username" : "xyz", "createdDate" : ISODate("2016-02-03T10:52:32.434Z") […]