Tag: aggregation framework

如何在mongodb中获得特定月份的明智logging?

这是我的模式 empname: {type: String}, soldby: {type: String}, expenseprice:{type:Number}, expensedesc:{type:String}, expensetype:{type:String}, createdat: {type: Date, default: Date.now} 我试过这个查询 db.expenses.aggregate([ { $project: { _id: 1, year: { $year: "$createdat" }, month: { $month: "$createdat" }, day: { $dayOfMonth: "$createdat" }, expenseprice: 1 } }, { $group: { _id: { year: "$year", month: "$month", day: "$day" }, sum: { […]

创build一个新的文档,使用聚合来汇总具有特定值的字段

我有一个聚合pipe道下面。 我想做一个看起来像这样的文档{upvotes : 20, downvotes : 30} 。 我想要一个方法来检查vote字段,如果值是up将其添加到upvotes字段和相同的down但downvotes字段。 我如何制作该文件? { _id: 57aea6791016c0b023a71e9d, review: { _id: 57aeb0ee1015118c2b19c8b9, updatedAt: Fri Aug 12 2016 22:33:17 GMT-0700 (Pacific Daylight Time), createdAt: Fri Aug 12 2016 22:32:30 GMT-0700 (Pacific Daylight Time), vote: 'up', reviewText: 'test pleas', company: 57aea6791016c0b023a71e9d, companyName: 'comp1', userType: 'anon', user: 57aeb0dd1015118c2b19c8b8, statements: [Object], __v: 0, className: […]

如何通过在$ project中提供的_id与$ mongodb聚合进行$匹配?

我想要能够匹配/过滤来自whiskey.style的特定风格。 我想知道是否由于OID的格式不匹配。 我试图toString()作为文件似乎build议 – 可能需要调查这更多.. 这是我的查询/ $匹配对象 var qObj.whiskeyFilter = { whiskey: { style: '57953144abfaa62383341a72' }, _id: { '$in': [ 57a115304d124a4d1ad12d81, 57a114d64d124a4d1ad12d7f, 57a1152a4d124a4d1ad12d80, 57a9049906f3733623826538 ] } } 我的pipe道: var pipeline = [ { "$project": { "weight": stack[0], "whiskey": "$$ROOT", "collection": collect[0] } }, { "$match": qObj.whiskeyFilter }, { "$sort": { "weight": 1 } }, { […]

使用项目字段计算mongoose

.project({ percentage_amount: { $multiply: ["$commission", { $divide: ["$price", 100] }] }, payable: { $subtract: ["$price", percentage_amount] } }) 这是可能的mongoose? 如果没有,该怎么做? 请帮助我

MongoDB使用聚合$查找join两个集合,或者在Node.js中填充

这里有两个集合的架构 var activitySchema = new Schema({ activity_id: {type: String, index: {unique: true}, required: true}, begin_date : String, … }) var registrationSchema = new Schema({ activity_id: {type: String, index: {unique: true}, required: true}, registration_id: {type:String, trim: true, index: true ,required: true }, email : String, … }) 我想在同一个查询中的activity.begin_date , registration.id , registration.email 。 我能怎么做? 我在网上find了一些解决scheme,但是仍然不知道是使用填充还是聚合$lookup (这个看起来是新的)。 […]

在$ project阶段中重塑文档

对于我们的collections,看起来像这样: > db.companies.find().limit(1).pretty() { "_id": ObjectId("52cdef7c4bab8bd675297d8b"), "name": "AdventNet", "permalink": "abc3", "crunchbase_url": "http://www.crunchbase.com/company/adventnet", "homepage_url": "http://adventnet.com", "blog_url": "", "blog_feed_url": "", "twitter_username": "manageengine", "category_code": "enterprise", "number_of_employees": 600, "founded_year": 1996, "deadpooled_year": 2, "tag_list": "", "alias_list": "Zoho ManageEngine ", "email_address": "pr@adventnet.com", "phone_number": "925-924-9500", "description": "Server Management Software", "created_at": ISODate("2007-05-25T19:24:22Z"), "updated_at": "Wed Oct 31 18:26:09 UTC 2012", "overview": "<p>AdventNet is now […]

如何在mogodb中使用$ lookupembedded文档字段

请看看,你的帮助将被appriciated var user = new Schema({ name: String, }); var Comments = new Schema({ title : String , body : String ,user_id : {type: Schema.Types.ObjectId, ref: 'user' } , date : Date }); var blog = new Schema({ author : String , title : String , body : String , date : Date , user_id […]

使用$ group在mongodb node.js中查找

我想通过order集合中的user_id进行分组,其中有很多条目,但是我想获取订单数量最多的五位用户,并总结特定用户的总体价格。 例如,如果我发了10个订单,我想取我的ID和我所有订单的总和。 我用下面的代码,但它不工作: Order.find({$group : { user_id : "$user_id"}},function(error,fetchAllTopUsers){ console.log('##################'); console.log(fetchAllTopUsers); }) 我已经检查了这个例子,但是他们没有使用$group查找。 我在Node.js和MongoDB中是新的。 与mongoose查询和总结 示例文档 { user_id : '57c7f4312b3c9771219bd21c', totalprice : 100 }, { user_id : '57c7f4312b3c9771219bd21c', totalprice : 59 }, { user_id : '57c7f4312b3c9771219bd21c', totalprice : 26 }, { user_id : '57c7f4312b3c9771219bd21c', totalprice : 533 }, { user_id : '57c7f4312b3c9771219bd21c', totalprice : 544 […]

如何在mongodb中两次过滤数据

的NodeJS var filter = {}; filter.strBillDate = { "$gte": new Date(req.params.fromdate), "$lt": new Date(req.params.todate) }; Sales.find(filter).exec(function(err, salesdata) { return res.send(salesdata); }); 这里它会过滤这两天的数据。 我需要每天在这些时间之间过滤数据(即每周7PM到10Pm)

Mongo:将返回的logging限制在切片上的递增计数

即时通讯在节点项目中使用mongoose,我有以下查询: var query = Model.aggregate( { $match: { id: id } }, { $sort: { created: -1 } }, { $project: { name: true, number: true, created: true, status: true, time: true, array_data: { $slice: ['$array_data', 5] } } } ) 我以为切片会根据array_data字段中有多less条logging将我的整个logging​​限制为5,但是它只会限制返回的array_data元素的数量。 我希望做的是: 可以说,我的模型中的logging1在array_data中有10个元素,在我的模型中有2个logging在array_data中有15个元素。 我希望能够切片或使用一些其他的function,所以当我查询我的模型与“限制”20它返回第一个集合与其所有10个元素array_data与第二个集合及其前10 array_data等于20的“极限”。 Mongo可以吗?