Articles of node mongodb native

node-mongodb-native:如何通过我的应用程序共享连接callback的db api对象

我正在从mongoose回滚到node-mongodb-native。 所以我在这个话题上是相当新的。 然而,我现在的问题是,想在服务器启动,然后我可以通过应用程序使用创build一个数据库集合。 不幸的是,我只能在存储库中find实例,只能在connect函数的callback中直接执行数据库操作。 文档: var mongodb = require("mongodb"), mongoServer = new mongodb.Server('localhost', 27017), dbConnector = new mongodb.Db('example', mongoServer); db_connector.open(function(err, db) { if (err) throw new Error(err); // here I can do my queries etc. }); 但是当我在某个路由callback中的时候,我怎样才能访问callback中的db对象呢? 目前我唯一的想法是将应用程序包装到callback中: var mongodb = require("mongodb"), express = require("express"), mongoServer = new mongodb.Server('localhost', 27017), dbConnector = new mongodb.Db('example', mongoServer); […]

如何将string转换为对象?

我有这段代码: var regex={"$regex":req.query.query,"$options":req.query.options } db.collection('coders', function(err, collection) { collection.find( {"name":regex} ).toArray(function(err, items) { res.send(items); }); }); 它如预期般运作良好。 现在我想能够使用任意字段而不是“名称”,所以我testing了这个: var regex={"$regex":req.query.query,"$options":req.query.options } var field="\"notName\"" db.collection('coders', function(err, collection) { collection.find( {field:regex} ).toArray(function(err, items) { res.send(items); }); }); 这不起作用。 什么是问题和调用collection.find()variables的正确方法是什么?

使用节点mongodb本地客户端更新对象的数量

我有以下更新MongoDB查询,通过MongoDB本地客户端在Node.js中运行。 查询工作正常 – 我看到在我运行这段代码后,在我的MongoDB中被修改的对象: collection.update( { _id : request.query.person, }, { $inc: { score : 1 } }, { safe : true}, this /* "this" is for Step */ ); 我想知道我的查询后在MongoDB中更新的logging数量是多less。 我已经看到,我可以通过在MongoDB中运行getLastError来检查它,但我不知道如何使用本地客户端从Node.js中执行它。 任何提示如何做到这一点? 除了调用getLastError还有其他的方法吗?

MongoDb中有多个更新的问题

我有这样的结构: { "_id" : ObjectId("51596b7e469b9c3816000001"), "company" : { "_id" : "ade2fd0ec9b8b5e9152e0155", "title" : "LO3426546457" }, } { "_id" : ObjectId("51596cef469b9c3816000008"), "company" : { "_id" : "ade2fd0ec9b8b5e9152e0155", "title" : "LO3426546457" }, } { "_id" : ObjectId("51596cc3469b9c3816000007"), "company" : { "_id" : "ade2fd0ec9b8b5e9152e0155", "title" : "LO3426546457" } } 而且我想用特定的“_id”来改变对象的所有“标题”字段。 我喜欢这个: Collections.UsersCollection.update({ 'company._id': 'ade2fd0ec9b8b5e9152e0155' }, { $set: { […]

mongodb 2.4全文search

在蒙哥贝壳我可以做到这一点 db.collection.runCommand( 'text', { search: 'query' } ) 我怎样才能得到这与mongodb本地和node.js? 我试图做这样的事情 db.executeDbCommand( 'text', { search:'query' }, function(e, o) { if (e) { callback(e) } else callback(o) }); 这是失败的

MongoDB节点本地驱动程序创build重复的文件

使用mongodb-native-driver将更新保存到文档时,出现重复的文档。 我第一次调用save()正确地创build文档并添加一个带有ObjectID值的_id。 第二个调用创build一个带有原始ObjectID文本_id的新文档。 例如,我结束了: > db.people.find() { "firstname" : "Fred", "lastname" : "Flintstone", "_id" : ObjectId("52e55737ae49620000fd894e") } { "firstname" : "Fred", "lastname" : "Flintstone with a change", "_id" : "52e55737ae49620000fd894e" } 我的第一个电话正确地创build了弗雷德弗林斯通 第二个叫“添加”到姓氏的调用创build了第二个文档。 我使用的是MongoDB 2.4.8和mongo-native-driver 1.3.23。 这是我的NodeJS / Express端点: app.post("/contacts", function (req, res) { console.log("POST /contacts, req.body: " + JSON.stringify(req.body)); db.collection("people").save(req.body, function (err, inserted) { […]

来自mongodb的警告 – “(节点)警告:检测到recursion的process.nextTick。 这将在下一版本的节点中断开。 请使用setImmediate …“

那里, 我正在运行节点0.10.24,我试图从一个mongodb集合中获取所有logging,一旦我的集合超过1000个元素,我得到这个错误: node.js:375抛出新的错误(msg); ^错误:(节点)警告:检测到recursionprocess.nextTick。 这将在下一个版本的节点中断。 请使用setImmediate进行recursion延期。 在CursorStream._next(/var/www/html/node_modules/mongodb/lib/mongodb/cursorstream.js:76:)处的process.nextTick(node.js:480:9)处的maxTickWarn(node.js:375:15) 11)在CursorStream._onNextObject(/var/www/html/node_modules/mongodb/lib/mongodb/cursorstream.js:98:8)at /var/www/html/node_modules/mongodb/lib/mongodb/cursorstream.js: 78:12在Cursor.nextObject(/var/www/html/node_modules/mongodb/lib/mongodb/cursor.js:540:5)at /var/www/html/node_modules/mongodb/lib/mongodb/cursorstream.js :77:18在process._tickCallback(node.js:415:13) 我尝试了两种从mongodb中获取数据的方法,但没有成功。 版本1: exports.findAll = function(req, res) { db.collection('products', function(err, collection) { var first = true; var stream = collection.find().batchSize(10000).stream(); var results = []; stream.on('data', function(item){ results.push(item); }).on('error', function (err) { // handle the error console.log(err); }).on('close', function () { // the stream is […]

多节点mongodb本地连接

当我运行这个Node.js代码: var mongodb = require('mongodb'), MongoClient = mongodb.MongoClient; MongoClient.connect('mongodb://localhost:27017/mydb', function(error, db) { if (error) { throw (error); } console.log('Connected!'); }); mongo日志显示打开5个连接: sudo mongod mongod –help for help and startup options 2014-11-04T21:03:23.107-0700 [initandlisten] MongoDB starting : pid=27572 port=27017 dbpath=/data/db 64-bit host=mylaptop 2014-11-04T21:03:23.107-0700 [initandlisten] db version v2.6.2 2014-11-04T21:03:23.107-0700 [initandlisten] git version: nogitversion 2014-11-04T21:03:23.107-0700 [initandlisten] build info: Darwin […]

如何将一个variables传递给mongodbcallback?

我试图从我的mongodb中为两个字段select不同的值。 使用async.series,我有以下几点: function getSettings(target){ var versions = []; var result = {}; function putResults(key, val){ result[key] = val; } async.series( [ function(callback){ db.get(target).distinct('version', function(err, arr){ if(err) return err; versions = arr; callback(); }); //end db call }, function(callback){ var items; for(var i = 0; i<versions.length; i++) { db.get(target).distinct('instance', {version: versions[i]}, function(err, arr){ items = arr; […]

如何在node.js中实现Mongodb游标的map函数(node-mondodb-native)

我正在尝试在NodeJS中实现以下MongoDB查询 db.tvseries.find({}).map(function(doc){ var userHasSubscribed = false; doc.followers && doc.followers.forEach(function(follower) { if(follower.$id == "abc") { userHasSubscribed = true; } }); var followers = doc.followers && doc.followers.map(function(follower) { var followerObj; db[follower.$ref].find({ "_id" : follower.$id }).map(function(userObj) { followerObj = userObj; }); return followerObj; }); return { "id": doc.name, "userHasSubscribed": userHasSubscribed, "followers": followers || [] }; }) 以下是db 用户集合 […]