Tag: mongodb

使用Javascript扫描Mongo数据库,并在string不相同时设置事件

我正在尝试使用Javascriptalgorithm循环我的MongoDB,search两个标识的URL,并对标题对象进行分析。 下面是这个对象的一个​​例子的一个片段: { "url": "www.professionalsupplementcenter.com", "date": "Tue Mar 26 2013 15:08:31 GMT-0400 (EDT)", "headers": { "server": "Microsoft-IIS/7.5", "x-aspnet-version": "4.0.30319", "x-powered-by": "ASP.NET" } } 具体来说,我会有两个集合。 这两个集合是MongoDB中两个相隔两个月的HTTP头部擦除数据库。 我们todayScrape给他们todayScrape电话和twoMonthFromNowScrape 。 通过这两个集合,我想比较它们的头对象, x-aspnet-version server , x-aspnet-version和x-powered-by ,看看这些数字是否有升级,EG IIS/7.5升级到IIS/8.0 (在将来)。 我没有任何代码可以显示,因为我不知道如何实现这个系统。 我不知道从哪里开始。 我想先比较这两个URL,然后当程序确定这两个URL都存在时,它会对这三个头对象进行特定的比较。 然后,只要按顺序对这些属性进行扫描,就可以报告这些属性,并在string不相同的情况下引发一些类似console.log("There has been a change")事件。 任何人都可以给我任何build议从哪里开始? 我被困在这个问题上几天,被卡住了一直令人沮丧。 我真的想开始实施它,但我需要一些帮助。

在MongoDB中执行非阻塞评估读取

我想通过node.js客户端在MongoDB服务器上运行javascript代码: db.eval("function(x){ return x*10; }", 1, function (err, retval) { console.log('err: '+err); console.log('retval: '+retval); }); 这工作正常。 但是文档说db.eval()发出一个写locking,所以没有别的东西可以读取或写入数据库。 我不要那个。 它也说eval没有这个限制,但是我不知道在哪里find它。 从他们谈论的方式来看,似乎普通的eval只能在mongo shell中使用,而不能在客户端使用。 所以:我怎样才能在mongodb服务器上运行这些存储过程而不阻塞一切?

在Mongoose中创build具有唯一属性的文档

我正在尝试在集合中保存具有独特属性的文档。 所以,如果有人试图用{name:'kitty'}保存一只小猫,而且这个名字已经存在,它将失败,然后重试{name:'kitty1'}(然后'kitty2'等)。 我真的无法弄清楚这样做的好方法,有什么想法吗? 这是我到目前为止(不起作用)。 var kittenSchema = new Schema ({ name: {type: String, index: {unique: true}} }) var Kitten = mongoose.model('Kitten', kittenSchema); var kitten = new Kitten({ name: 'kitty' }); kitten.save(function(err, kitten){ if (err){ saveKitten(kitten, 1, function(err, kitten){ if (err){ console.log("Damn, no kitten"); } else { console.log("New kitten " + kitten.name + "saved."); }); } […]

将函数应用于MongoDB中的集合中的所有对象的最有效方法是什么?

假设我想计算集合中所有对象的“stream行度”字段。 这取决于当前时间与“submitTime”字段和“投票”字段中的数字的区别。 此操作将每小时运行一次。 在所有对象上运行函数最有效的方法是什么? 只是一个例子,它可以是任何function: function(){ this.popularity = this.votes / (Date.now() – this.submitTime); }

NodeJS,Mongoose – 插入数据时的重复条目

我有Mongoose的NodeJS,我正在访问一个API来检索数据。 我有一个Schema如下。 var dataSchema = new Schema({ id:Number, name:String )); 而我正在使用下面的代码来插入。 var d = Data.find({id:data.id}, function(error, curr_data) { if(curr_data.length == 0) { // check to make sure only unique entries are entered console.log(" Inserting : " + curr_data.name); new Data(data).save(); } }); 但是,当我检查我的Mongo DB,我仍然可以看到重复的条目。 有没有其他方法?

显示消息所有者

请帮助我理解mongodb。 有三个集合:线程,消息和用户。 线 { "title" : "1212", "message" : "12121", "user_id" : "50ffdfa42437e00223000001", "date" : ISODate("2013-04-11T19:48:36.878Z"), "_id" : ObjectId("51671394e5b854b042000003") } 信息 { "message" : "text", "image" : null, "thread_id" : "51671394e5b854b042000003", "user_id" : "516d08a7772d141766000001", "date" : ISODate("2013-04-17T15:58:07.021Z"), "_id" : ObjectId("516ec68fb91b762476000001") } 用户 { "user" : "admin", "date" : ISODate("2013-04-16T08:15:35.497Z"), "status" : 1, "_id" : ObjectId("516d08a7772d141766000001") […]

Mongooserecursion查询父引用

我正在尝试做这个mongo例子,但是在mongoose中。 mongoose似乎更为复杂。 可能我正在试图在一个圆形孔中安装一个方形钉? 这个例子来自http://www.codeproject.com/Articles/521713/Storing-Tree-like-Hierarchy-Structures-With-MongoD (具有父参照的树结构) 我试图build立一条path。 var path=[]; var item = db.categoriesPCO.findOne({_id:"Nokia"}); while (item.parent !== null) { item=db.categoriesPCO.findOne({_id:item.parent}); path.push(item._id); } path.reverse().join(' / '); 谢谢!

服务器上的正确variables通过socket.io作为不正确的variables传递给客户端

我试图通过socket.io从服务器传递给客户端的variables。 我将数据保存到MongoDB并使用Mongoose。 目标是将客户端的一些数据保存到数据库中,然后将刚刚保存的文档的_id传递回客户端。 以下是我到目前为止: 服务器 client.on('savesnail', function (data) { console.log('save snail: ' + data.name); var snail = new Snail(data); snail.save(function (err, snail) { if (err) {console.log('err: ' + err)} // TODO handle the error var snailID = snail._id; console.log('saved snail ID ' + snailID); client.emit('setSnailID', snailID); var conditions = {_id: data.ownerID}, update = {$set: {newUser: […]

当使用一串键作为select器进行筛选时,mongoosejs查询失败

我试图从一个mongodb查询文档,并让系统从匹配查询的文档中只返回几个字段。 我第一次尝试下面列出的第一个查询的语法,它没有回来,即从来没有调用callback。 然后,我用另一种语法进行了一些尝试,并从下面列出的第二个查询中获得了结果。 我想了解为什么第一个查询不起作用 – 我误解了语法? 这是mongoose3.6.8和mongo 2.4 TIA 第一个查询 query.find({ category:{ $in: categoryArray } ,expiration:{$gte: new Date()} ,place:queryVal.destination } ,'_id expiration url' ,function (err, docs) { if (err) { console.log(err); } else { console.log('queryJoin returned ' + docs.length + 'entries'); } } ); 第二个查询 query.find({ category:{$in: categoryArray} ,expiration:{$gte: new Date()} ,place:queryVal.destination }) .select({_id:1, expiration:1, […]

MongoDB更新/插入整个集合(数组)

我有收集的items , [ { itemId: 1249, someField: 'abc' }, { itemId: 1479, anotherField: 'bcc' } , // etc ] 我收到另一部分数据。 一些项目可能已经在那里,有些不是, [ { itemId: 6534, someField: 'trw' }, // already stored in collection.. { itemId: 1249, someField: 'abc' } ] 我正在寻找批量插入这种数据与upsert策略的方式(意思是,如果具有这样的itemId的项目已经存在 – 更新,否则插入)。 这是可能的只有一个查询,我需要通过手动收集每个项目,并上传?