Tag: sorting

MongoDb在其他Collection中按count计数

我有两个集合: collection A和collection B 集合B“A_id”将具有来自集合A的_id(有点像关系)。 集合A { _id, name } 集合B { _id, A_id, other_id } 我需要将文档重复数量的集合A中的文档分类到集合B中的A_id(如果可能,请按次数sorting)。 约束是我们不想在集合A中有一个数组,因为B中的文档会增长很多,并会不断更新。 任何想法如何执行这种sorting? 非常感谢

如何使用variables而不是stringsortingMongoose上的数组索引?

我试图根据variables的索引值对数据进行sorting。 我想有totalClicks[0] ,但totalClicks[0]语法不起作用。 我search并尝试使用'totalClicks.0' ,这工作正常。 但我需要检查req.params.bossId基于array[req.params.bossId]对数据进行sorting。 这是第一个硬编码的代码。 User.find({}).sort({ 'totalClicks.0' : '1'}).exec( function (err, data) { res.json(data); }); 这个dynamicselectsorting的数组字段的代码不工作,整个.sort方法被忽略。 var bossId = req.params.bossId; var totalClicksId = 'totalClicks.' + bossId; console.log(totalClicksId); // totalClicks.0 console.log(typeof(totalClicksId)); // string User.find({}).sort({ totalClicksId : '1'}).exec( function (err, data) { res.json(data); }); 如果IDvariables是0 ,他们我想通过totalClicks[0]sorting数据。 如果IDvariables是1 ,他们我想通过totalClicks[1]sorting数据。 我需要接收一个variablesbossId并使用该variables,基于array[bossId]对数据进行sorting。 我怎么能这样做? 附录: 模型: [ { "username": […]

sortingMongoose中的一个子文档

我正试图sorting来自Mongoose的输出存储在一个子文档中的date。 我相信这可以在客户端更容易完成,但是我想限制在服务器资源上的延迟,并延迟加载子文档,而不是一次加载所有子文档。 我正在开发一个私人消息function。 我有一个名为Conversations定义的架构,我有另一个称为消息定义的架构。 他们的代码如下: const mongoose = require('mongoose'); const ChatSchema = new mongoose.Schema({ messageBody: { type: String, required: true }, from: { type: String, required: true } }, { timestamps: true // Saves createdAt and updatedAt as dates. createdAt will be our timestamp. }); const ConversationSchema = new mongoose.Schema({ participants: [String], messages: [ChatSchema] }); […]

错误的基于名称属性的对象数组

我有一个包含状态和名称属性的对象数组。 我想要使​​用他们的name属性使用下面的代码: array = array.sort(function(a,b){ return a.name – b.name }); 但是它不会返回正确的sorting数组。 这里有一个片段,你可以看到它的行动: var array = [{"name":"whoopsie","status":"active"},{"name":"acpid","status":"active"},{"name":"apache2","status":"active"},{"name":"apparmor","status":"active"},{"name":"apport","status":"active"},{"name":"avahi-daemon","status":"active"},{"name":"bluetooth","status":"active"},{"name":"cron","status":"active"},{"name":"cups","status":"active"},{"name":"cups-browsed","status":"active"},{"name":"dbus","status":"active"},{"name":"grub-common","status":"active"},{"name":"irqbalance","status":"active"},{"name":"kmod","status":"active"},{"name":"lightdm","status":"active"},{"name":"lvm2-lvmetad","status":"active"},{"name":"lvm2-lvmpolld","status":"active"},{"name":"apache-htcacheclean","status":"active"},{"name":"network-manager","status":"active"},{"name":"networking","status":"active"},{"name":"postfix","status":"active"},{"name":"procps","status":"active"},{"name":"resolvconf","status":"active"},{"name":"rsyslog","status":"active"},{"name":"smartmontools","status":"active"},{"name":"smbd","status":"active"},{"name":"speech-dispatcher","status":"active"},{"name":"ssh","status":"active"},{"name":"thermald","status":"active"},{"name":"tlp","status":"active"},{"name":"udev","status":"active"},{"name":"ufw","status":"active"},{"name":"lvm2-lvmpolld","status":"inactive"},{"name":"mysql","status":"active"},{"name":"alsa-utils","status":"inactive"},{"name":"x11-common","status":"inactive"},{"name":"apache-htcacheclean","status":"inactive"},{"name":"avahi-daemon","status":"inactive"},{"name":"console-setup.sh","status":"inactive"},{"name":"cryptdisks","status":"inactive"},{"name":"cryptdisks-early","status":"inactive"},{"name":"cups-browsed","status":"inactive"},{"name":"grub-common","status":"inactive"},{"name":"hwclock.sh","status":"inactive"},{"name":"kerneloops","status":"inactive"},{"name":"keyboard-setup.sh","status":"inactive"},{"name":"laptop-mode","status":"inactive"},{"name":"lvm2","status":"inactive"},{"name":"lvm2-lvmetad","status":"inactive"},{"name":"anacron","status":"inactive"},{"name":"network-manager","status":"inactive"},{"name":"nmbd","status":"inactive"},{"name":"plymouth","status":"inactive"},{"name":"plymouth-log","status":"inactive"},{"name":"pppd-dns","status":"inactive"},{"name":"prometheus","status":"inactive"},{"name":"rsync","status":"inactive"},{"name":"samba","status":"inactive"},{"name":"samba-ad-dc","status":"inactive"},{"name":"saned","status":"inactive"},{"name":"speech-dispatcher","status":"inactive"},{"name":"unattended-upgrades","status":"inactive"},{"name":"uuidd","status":"inactive"},{"name":"unattended-upgrades","status":"active"}]; array = array.sort(function (a,b) { return a.name – b.name }) console.log(array.map(function(i){ return i.name })) 这是输出: 我在nodejs中运行这个代码 [ 'whoopsie', 'unattended-upgrades', 'apache2', 'apparmor', 'apport', 'avahi-daemon', 'bluetooth', 'cron', 'cups', 'cups-browsed', 'dbus', 'grub-common', 'irqbalance', 'kmod', 'lightdm', 'lvm2-lvmetad', 'lvm2-lvmpolld', 'apache-htcacheclean', 'network-manager', 'networking', 'postfix', 'procps', […]

在Redis中存储事件时间表

我想在Redis的时间表中存储事件列表。 我正在考虑自1970年以来的sorting集,以秒为单位进行评分,允许快速查找和范围search。 问题是,我希望每个事件代表一个对象,用几个键(大概3个也许),所以我会存储一个有序的一组ID – 应用程序然后将查找基于ID的哈希。 所以谈话会是这样的: > ZRANGEBYSCORE events start end 1) "16" 2) "17" > HGETALL events:16 1) "key1" 2) "val1" … > HGETALL events:17 … 有没有更好的方法来组织或做一些事情,避免应用程序对每个结果单独调用。 一切都可以在redis服务器端完成,以避免这种开销? 这是一个大问题吗? PS。 我正在使用节点客户端,但我的问题也适用于其他语言。

mongoose嵌套/深填充

我知道这个问题已经被问了很多次,但是我对mongodb / mongoose是一种新的! 目前我正在为医疗软件开发一个MEAN栈。 以下是我的模式: var usersSchema = new Schema({ _id : {type : mongoose.Schema.ObjectId} //… }); mongoose.model('Users', usersSchema); var doctorsSchema = new Schema({ _id : {type : mongoose.Schema.ObjectId}, userid : {type : mongoose.Schema.ObjectId, ref : 'Users' }, //… }); mongoose.model('Doctors', doctorsSchema); var appointmentsSchema = new Schema({ _id : {type : mongoose.Schema.ObjectId}, doctorids : [ […]

NodeJS + Node-MongoDB-native:按字母顺序sorting对象

我想按字母顺序按“名称”参数sorting集合中的对象。 以下是我正在使用的代码: app.get('/companies', loadUser, function(req,res){ db.collection("companies",function(err,collection){ collection.find({}, { sort:[['name',-1]]},function(err, companies) { var companies_list = new Array(); companies.each(function(err, company){ … }); }) }); 实际上我不明白sorting参数的工作原理和-1是什么。 官方文件没有帮助我。 谢谢!

MongoDB parseError使用限制和sorting

我只是想在mongoDB中使用sorting和限制,但是我得到一个parseError,只有当我input的限制是很大的。 handCollection = db.collection('hands'); handCollection.count(function(err,res){numHands=res;console.log(numHands)}) //logs 12542 limit=10000 query= query.sort({gameNum:-1}).limit(limit) query.toArray(function(er,hands){ if (er) throw er console.log('Hands Sent:'+hands.length) res.send(JSON.stringify(hands)); )}; 此代码工作时设置限制为10000,但是当我设置限制= 12000,我会得到以下错误: Error: parseError occured at null.<anonymous> (C:\wamp\www\poker-tell\server\node_modules\mongodb\lib\mongodb\connec tion\connection_pool.js:182:34) at EventEmitter.emit (events.js:98:17) at Socket.<anonymous> (C:\wamp\www\poker-tell\server\node_modules\mongodb\lib\mongodb\conn ection\connection.js:389:20) at Socket.EventEmitter.emit (events.js:95:17) at Socket.<anonymous> (_stream_readable.js:746:14) at Socket.EventEmitter.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:408:10) at emitReadable (_stream_readable.js:404:5) at readableAddChunk (_stream_readable.js:165:9) at Socket.Readable.push […]

在Node.JS中对数据进行sorting

我正在使用Node.JS和MongoDB。 我已经创build了一个CSV文件的报告,这是我的代码, function buildListCsvContent() { var array = []; var counter = 0; for (var i = 0; i < vm.student.length; i++) { var row = { No: counter + 1 , Registration_Number: "'" + student.registrationNumber.toString() , Name: student.firstName + ' ' + student.lastName } array.push(row); counter++ } } var args = { data: array […]

具有自定义方法的Node.js array.sort会导致RangeError:超出最大调用堆栈大小

所以,我有一个100,000+项目的数组,这一行导致它吹响了调用堆栈: @sortedList.sort (a, b) -> return if a.value > b.value then -1 else 1 我即将实施一个自定义的一些变种(build议,任何人?)来解决这个问题,但我只是想确保我没有做一些公然愚蠢的事情,导致它爆炸。