Tag: 和尚

如何在Node.js中使用MongoDB $ slice

我正在使用Node.js应用程序中的monk与MongoDB进行通信。 有没有办法使用修剪驱动程序的$ slice修饰符。 我想运行的查询是 db.messages.find( {"_id" : ObjectId("557c46191e7aef1b02d5db73")}, { msgs: { $slice: -2 } } );

MongoDB更新/插入文档并增加匹配的数组元素

我使用Node.js和MongoDB与monk.js,我想以一个最小的方式做一个文件每小时的日志logging,如: 最终文件: {time:YYYY-MM-DD-HH,log:[{action:action1,count:1},{action:action2,count:27},{action:action3,count:5}]} 应该通过递增一个值来创build完整的文档。 例如,某人在这个小时内首先访问一个网页,action1的增量应该用一个查询创build下面的文档: {time:YYYY-MM-DD-HH,日志:[{action:action1,count:1}]} 在这个小时内的另一个用户访问另一个网页,文档应该被扩展到: {time:YYYY-MM-DD-HH,log:[{action:action1,count:1},{action:action2,count:1}]} 并且访问不同的网页时计数值应该增加。 目前我创build了每个行动的文件: tracking.update({time:moment().format('YYYY-MM-DD_HH'),action:action,info:info},{$ inc:{count:1}},{upsert:true},function呃){} 这可能与monk.js / mongodb? 编辑:谢谢。 你的解决scheme看起来干净优雅,但看起来像我的服务器无法处理它,或者我不能让它工作。 我写了一个极其肮脏的解决scheme,以action-name为关键字: tracking.update({time:time,ts:ts},JSON.parse('{“$ inc”:{“'+ action +'”:1}}'),{upsert:true},function(err){ });

Mongodb / Monk'count'是未定义的

下面是我试图做的一个简单的例子,只是为了让.count()工作。 当我运行这个我得到'TypeError:undefined不是一个函数'有关count()函数。 看着文档和其他SO问题,我真的认为这会工作,我做错了什么 我在一个小的node.js应用程序中使用Mongo〜2.0和Monk〜1.0.1。 var db = req.db; var col = db.get('misconceptions'); col.find({questionId: "1", isCorrect: "true"}, {}).count(function (e, count) { console.log(count); });

select使用唯一的ID在MongoDB中不工作的数组元素

我的应用程序有“post”,这将有故事 现在,我要select故事数组中多个故事中的一个故事并仅select其中一个故事 var db = req.db; var mongo = require('mongodb'); var collection = db.get('clnPost'); var userId = req.body.userId; var postId = req.body.postId; var storyId = req.body.storyId; var ObjectID = mongo.ObjectID; var mongo = require('mongodb'); var ObjectID = mongo.ObjectID; collection.find({ _id: ObjectId(postId), "Stories._id": ObjectID(req.body.storyId)}, function (e, docs) { //some processing on the docs } 我希望这个返回的post和只包含通过请求发送的故事Id的故事一起,但是它返回了故事数组中的所有故事 在这里,我得到了这个职位的所有故事,因为我只需要与Id相匹配的故事req.body.storyId […]

为什么我不能在我的NodeJS应用程序中使用stringuuid作为自定义的MongoDB _id?

我正在开发一个NodeJS应用程序与MongoDB数据库(使用本地MongoDB的NodeJS驱动程序),并希望使用一个string作为我的主键。 当_id是一个string时,这个插入失败了: collection.insert({_id : "customId", name : "sampleName", email : "sampleEmail"}, {}, function(err, result) { if (err) { res.send({msg : err}); } else { res.send({msg : 'SUCCESS'}); } }); 这段代码在我的NodeJS应用程序中。 当我通过我的数据库上的mongo shell命令尝试相同的插入时,它工作正常。 我知道MongoDB主键的自定义_id字段必须保证是唯一的。 我打算在我的代码中使用uuidstring,但没有string_id似乎工作。 我在这里阅读https://docs.mongodb.org/manual/core/document/#field-names _id必须是唯一的,可以是除数组以外的任何types。 我也回顾了这个问题在MongoDB中创build自定义对象ID是相似的,但它还没有解决我的问题。 为什么我不能使用string作为自定义_id字段? 编辑:错误消息说:“[错误:parameter passing必须是一个12字节的string或24个hex字符的string]” 编辑2: 这是我的完整代码: router.post('/addcontact', function(req, res) { var db = req.db; var newContact = req.body; var […]

For循环在节点js中不能正常工作

我想通过for循环插入多个数据,但是这个代码只添加2或3个数据,然后继续加载,但没有发生任何事情… router.post('/addclient' , function (req , res){ var finished = false; var user = req.body.username; for(var i = 0 ; i <30 ; i++){ req.body.username = user + i ; objDB.insert("clientList" ,req.body, function(err, data){ //if(err) console.log(err); if(i>20){ finished = true; } }); } if(finished){ res.redirect('/client/client-list'); } });

如何在node.js中访问整个应用程序中的数据库连接?

我在app.js中连接mongodb和monk var express = require('express'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/nodetest1'); app.use(function(req,res,next){ req.db = db; next(); }); 它在这里工作正常。 但是现在我在route文件夹中添加index.js var monk = require('monk'); var db = monk('localhost:27017/nodetest1'); exports.index = function(req, res){ var collection = db.get('usercollection'); collection.find({},{},function(e,docs){ res.render('userlist', { "userlist" : docs}); […]

当有一个标准时,node.js中的mongodb投影被忽略

我使用express,mongodb和monk来编写node.js应用程序。 当我只用标准进行查找或只用预测的时候,我得到了预期的结果,但是当我用这两个查找时,返回完整的文档,即不执行投影。 我的代码如下所示: var collection = db.get('myDB'); collection.find({field1: "value"},{field2: 1, _id: 0},function(e,docs) { …do stuff with docs… }); 它不仅返回field2而且返回与field1上的条件匹配的所有文档的所有字段。 我可以从这里得到field2 ,但我不喜欢它的低效率。 有没有办法使用标准和预测?

发出一个简单的mongo /修士findAndModify查询

只是一个说明,我对mongo来说还是比较新的,对于使用node / js来说更是显得非常新颖。 我试图编写一个查询来插入新文档或更新我的集合中已经存在的文档。 拟议的收集结构是: { _id: xxxxxxx, ip: "xxx.xxx.xxx.xxx:xxxxxx", date: "xx-xx-xx xxxx" } 请注意,我的意图是一个固定长度的int为_id而不是内部的ObjectId(这是可能的/被认为是不好的做法?)。 整数保证是唯一的,来自另一个来源。 var monk = require('monk'); var db = monk('localhost:27017/cgo_schedule'); var insertDocuments = function(db, match) { var db = db; var collection = db.get('cgo_schedule'); collection.findAndModify( { "query": { "_id": match.matchId }, "update": { "$set": { "ip": match.ip, "date": match.date }, "$setOnInsert": […]

传入的参数必须是24个hex字符的string – 我认为是

我有一个方法来根据它的ObjectID在我的数据库中find一个文档: console.log('id: ' + id + ' type: ' + typeof id); collection.findOne({'_id':new ObjectID(id)}, function(error,doc) { if (error) { callback(error); } else { callback(null, doc); } }); 当我运行它时,我得到以下错误: /myPath/node_modules/monk/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/connection/base.js:245 throw message; ^ Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters at new ObjectID (/myPath/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:38:11) […]