Articles of node mongodb native

在mongodb中插入数据时添加一个条件

基本上我想检查数据库中插入数据(即使用本地mongodb驱动程序)之前是否存在特定的数据,所以我试图使用collection.findOne()检查数据是否存在,如果属性的属性为null collection.insert()执行。 显然我的代码不按照逻辑工作,请有人启发我! 我的一些代码: exports.addUser = function(req, res) { var twitterId = req.body.provider; var userEmail = req.body.email; db.collection('users', function(err, collection) { collection.findOne({'email':userEmail }, function(err, item){ if(item.email === null){ collection.insert({ 'email': userEmail, 'provider': { 'twitter': { 'id': twitterId } } }, function(err, result) { if (err) { res.send({'error':'An error has occurred'}); } else { console.log('Success: ' […]

显示消息所有者

请帮助我理解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") […]

相当于Node.js中的mongo shell db.collection.runCommand()

我想在MongoDB 2.4中使用全文search。 文本search可通过runCommand函数获得,例如db.collection.runCommand( "text", { search: "keywords"}) 。 所以,我想知道在mongojs或者node-mongodb-native模块中是否有相当于runCommand()函数。 我知道这个问题以前曾经触及过,但从来没有得到足够的回答。 提前致谢。

为什么不在db.collection()中callback?find()。toArray(callback)在数据库连接被删除的情况下调用?

我有这个代码: db.collection('users').find({ active: true ).toArray(callback); 其中db是一个打开的数据库连接到我的本地mongodb服务器。 这工作正常。 但是,如果我手动closures我的MongoDB服务器,而我的应用程序仍在运行,然后执行这一行代码,callback永远不会执行,即使有错误。 这是预期的行为? 我能做些什么来使我的应用程序对丢弃的数据库连接作出反应? 编辑: 我试过这个: db.collection('users') .find({active: true}, function(err, cursor) { if (err) callback(err); else cursor.toArray(callback); }); 再说一次,当连接处于活动状态时,这将起作用,但是当连接被删除时,find()的匿名callback函数会以'err'为空来调用,并且根本不会调用.toArray的callback函数。 如何重写我的代码,以便我得到一个错误,如果db连接不活着?

使用计数器集合在node-mongodb-native中自动增量

有没有什么方法可以像node-mongodb-native文档中描述的那样实现计数器集合 ? 我试图避免通过嵌套超过9000callback(恕我直言,这听起来不整洁,而不是优雅),但写这个本地驱动程序的好人拒绝执行同步/阻塞调用。 原生驱动程序是否提供了一些方法来调用用户定义的函数并在查询过程中使用它们的返回值? 或者可以有一个替代方法提取序列计数….也许完全从一个ObjectID() ? 有任何想法吗? 编辑: 这不是用于_id字段的(这由db.coll.save(x) ) 我在一个集合中有不同types的文档。 如果你知道我的意思,每一个都需要自己的“types序列”或“types序列”。 我已经实现了这个(加上其他的东西)与afew嵌套调用,如下所示。 doc是来自客户端的JSON.parse 。 我必须用_id (按db.coll.savesorting)和typeserial (当前按db.coll.countsorting,如下所示)将此doc返回给客户端。 ///more nesting Async calls above. db.collection('dox').count( { "type" : doc.type } , function( err , count ) { ///{some err checking code here} doc.typeseq = (1+count); db.collection('dox').save( doc , function( err , doc ) { ///{more code […]

在mongodb for each循环查询后在SailsJS中渲染视图

我有2个集合名为“Keywords”和“Company”,我使用MongoDB聚合框架从关键字user key中的“Keywords”集合中检索相关的object._id。 当我从关键字集合中得到object._id后,我想使用object._id从公司集合中查询和编译最终的完整文档。 我在res.view()首先运行的部分停留在result []收集Company集合的所有文档之前。 我需要帮助把我的代码转换为同步方法。 请帮帮我。 以下是我所做的。 来自“关键字”集合的文档样本 { "_id": ObjectID("52ac7130bd40d00a7beb7a29"), "keyword": "Sunshine", "object": [ { "_id": ObjectID("528443ce751fc9b805d640ad"), "type": "companyName" } ] } 来自“公司”集合的doc样本 { "_id": ObjectID("528443ce751fc9b805d640ad"), "name": "Sunshine Plaza", … … … } SailsJS中的SearchController var keyWords = req.query.q, searchKeywords = keyWords.toLowerCase().replace(/[^\w\s]/gi, ' ').split(' '), //For example user key in "Sunshine Plaza" results = […]

在与Mongo节点驱动程序的插件,插入或更新?

我正在使用Mongo的本地节点驱动程序。 对于一个upsert像: collection.update(query, setData, { upsert: true }, callback); 有没有办法确定upsert是否插入或更新? 使用Mongo Shell,您可以返回WriteResult.nUpserted来确定这一点,但我不确定如何从节点本机驱动程序获取该信息。 http://docs.mongodb.org/manual/reference/method/WriteResult/#WriteResult.nUpserted 谢谢。

如何删除特定的数据mongodb + nodejs + expressjs

如何使用node + express删除数据。 这里是我的路由器删除过程 // Delete user router.get('/deleteuser/:id', function(req, res) { var db = req.db; var uid = req.params.id; db.collection('usercollection').remove(uid, function(err, result) { res.send( (result === 1) ? { msg: '' } : { msg: 'error: '+ err } ); }); }); 从上面的函数中,我得到了404错误页面。 Error: Not Found at Layer.app.use.res.render.message [as handle] (/media/bcd44b6a-9c2e-4496-81da-b45d3c349c91/mywork/nodejs/blog/blogone/app.js:40:15) at trim_prefix (/media/bcd44b6a-9c2e-4496-81da-b45d3c349c91/mywork/nodejs/blog/blogone/node_modules/express/lib/router/index.js:240:15) at […]

在终止之前closures数据库连接

当我正在debugging时,我开始和终止我的节点过程很多次。 这使得这种情况发生: 2014-07-20T15:53:19.162-0400 [conn352] authenticate db 2014-07-20T15:53:19.163-0400 [conn353] authenticate db 2014-07-20T16:13:59.631-0400 [conn354] authenticate db 2014-07-20T16:13:59.635-0400 [conn355] authenticate db 2014-07-20T16:13:59.636-0400 [conn356] authenticate db 2014-07-20T16:13:59.636-0400 [conn357] authenticate db 2014-07-20T16:19:01.747-0400 [conn358] authenticate db 2014-07-20T16:19:01.750-0400 [conn359] authenticate db 2014-07-20T16:19:01.751-0400 [conn360] authenticate db 2014-07-20T16:19:01.767-0400 [conn361] authenticate db 2014-07-20T16:19:33.227-0400 [conn362] authenticate db 2014-07-20T16:19:33.229-0400 [conn363] authenticate db 2014-07-20T16:19:33.230-0400 [conn364] authenticate db 2014-07-20T16:19:33.239-0400 […]

需要我的模块的多个文件覆盖它的variables

我正在尝试创build一个mongo连接池工厂,检查连接到mongo是否已经存在并返回一个连接。 如果它不创build连接池并返回一个连接。 我希望能够从要查询mongo的多个文件中要求这个。 每个文件都需要像这样的mongo: var fooMongoFactory = require('../../lib/mongoFactory').init(mongodb://localhost:27017/foo); 然后你在你的文件中使用它像这样: fooMongoFactory.getConnection().then(function(db) { // do stuff }); 我遇到的问题是我想能够在一个文件中指定多个不同的mongo实例,但是当我这样做的时候,我的第二个init覆盖了第一个。 例: var fooMongoFactory = require('../../lib/mongoFactory').init(mongodb://localhost:27017/foo); var barMongoFactory = require('../../lib/mongoFactory').init(mongodb://localhost:27017/bar); fooMongoFactory.getConnection().then(function(db) { // querying in here is actually pointing at the mongo db "bar" }); 我如何调整我的工厂,以便我可以连接到多个不同的mongo实例,以及跨多个文件使用相同的工厂,而不必每次都实例化它? 我想过使用构造函数,但是这会在每个使用mongoFactory的文件中创build一个新的连接池。 /** * Creates and manages the Mongo connection pool * * @type {exports} […]