Tag: aggregation framework

如何在MongoDB中进行收集?

我们在Node.JS中有以下查询 mongo.connect('mongodb://XXX:XXX@ds054XXX.mlab.com:54289/XXXdb', function (err, db) { var collection = db.collection('chatmessages') var stream = collection.find().sort({ _id: -1 }).limit(20).stream(); stream.on('data', function (chat) { socket.emit('user message', chat.content, chat.dateCreated); }); }); 如您所见,查询是最近input的20条logging的集合。 但是从这个结果来看,我们想在_id中再次求助于1,所以在列表中我们将有55到75的ID(顺序)。 所以最后一个总是在底部。 我们如何再次实现这一目标?

MongoDB计数不同的值?

下面显示我的代码。 我必须计算重复值的次数。 在这里,我有存储在“结果”独特的价值。我用collection.count()来计算,但它不工作。 请任何人告诉我,我不得不错误。 非常感谢你 。 var DistinctIntoSingleDB = function(Collection,arr,opt,distVal,callback){ Collection.find({}).distinct(distVal, function(err, results) { if(!err && results){ console.log("Distinct Row Length :", results.length); var a,arr1 = []; for(var j=0; j<results.length; j++){ collection.count({'V6': results[j]}, function(err, count) { console.log(count) }); arr1.push(results[j]+ " : " +a); } callback(results,arr1); }else{ console.log(err, results); callback(results); } });

MongoDB聚合算术操作 – 子文档字段

我们有一个聚合查询投影几个子文件。 我们想要对这些投影值应用Sum和Product等算术运算。 聚合查询 – Item.aggregate([ { $unwind: '$dummy'}, { $match: {'dummy.storage': {$gt: 0}} }, { $group: {_id: '$_id', dummy: {$push: '$dummy'}, original_y: { $first: "$original_y" }, new_y: { $first: "$new_y" }, }}, {$project:{ original_y: 1, new_y: 1, tallyAmount: {$sum: ["$new_y","$original_y"] } } }, ] ) .exec(function(err, results){ if(err) { console.log("Error : " + err); return […]

mongoose – 如何分组和填充?

我使用MongoDB和Mongoose作为我的ODM,我试图使用populate和group by在同一语句中进行查询。 这里是我的简单文件模型: var userSchema = new Schema({ username: String }); var messageSchema = new Schema({ from: { type: Schema.ObjectId, ref: 'User' }, to: { type: Schema.ObjectId, ref: 'User' }, message: String, date: { type: Date, default: Date.now } }); 我只是试图把每个用户的消息,每个与他交谈的用户分组。 我试过这样的: this.find({ 'to': user }) .sort({ 'date': 1 }) .group('from') .populate(['from', 'to']) .exec(callback); 但不幸的是,我的模型没有group方法。 […]

在两个不同的字段mongodb + node.js中search值

我是新手。 但我试图学习编写查询的最合理的方法。 假设我有collections这是; { "id" : NumberInt(1), "school" : [ { "name" : "george", "code" : "01" }, { "name" : "michelangelo", "code" : "01" } ], "enrolledStudents" : [ { "userName" : "elisabeth", "code" : NumberInt(21) } ] } { "id" : NumberInt(2), "school" : [ { "name" : "leonarda da vinci", "code" : […]

如何使用mongoose发现所有包含一部分string的值?

我有以下问题使用mongoose从MongoDB中检索数据。 这是我的模式: const BookSchema = new Schema( { _id:Number, title:String, authors:[String], subjects:[String] } ); 你可以看到我有2个数组embedded对象,让我们说,作者的内容可以是这样的:作者:[“亚历克斯·弗格森”,“德罗巴”,“克里斯蒂亚诺罗纳尔多”,“亚历克斯”] 我想要实现的是获得arrays中的所有Alex。 到目前为止,我已经能够得到值,如果他们完全匹配的价值。 但是,如果我试图得到那些包含亚历克斯的答案总是[]。 我想知道的是,如何使用find()而不执行map-reduce来创build视图或集合,然后在其上应用find()。 这里的代码适用于完全匹配 Book.find( {authors:req.query.q} , function(errs, books){ if(errs){ res.send(errs); } res.json(books); }); 我尝试了一些东西,但没有运气{作者:{$ elemMatch:req.query.q}} {作者:{$ in:[req.query.q]}} 这个给了我一个错误,而且在我发现这里的另一个post里说的是非常低效的。 {$ where:this.authors.indexOf(req.query.q)!= -1} 我也试过{作者:{$ regex:“./ value / i”}} map-reduce工作正常,我需要使用其他方法来查看哪个更好? 任何帮助是极大的赞赏。 我确信这很容易,但是我是NodeJS和Mongo的新手,我一直无法自己搞清楚。

mongoosesorting聚合的结果

解决这个mongodb(mongoose)问题我有很多困难。 有这个架构'推荐'(用户名,roomId,ll和date),其集合包含用户的build议。 我需要得到最推荐的房间列表(由roomId)。 下面是模式和我尝试过的mongoose查询解决scheme。 var recommendSchema = mongoose.Schema({ username: String, roomId: String, ll: { type: { type: String }, coordinates: [ ] }, date: Date }) recommendSchema.index({ ll: '2dsphere' }); var Recommend = mongoose.model('Recommend', recommendSchema); Recommend.aggregate( { $group: { _id: '$roomId', recommendCount: { $sum: 1 } } }, function (err, res) { if (err) return […]