Tag: node mongodb native

我如何设置node-mongod-native的日志logging?

我正在尝试为节点的本机mongo驱动程序设置日志logging。 我有下面的代码片段作为我正在尝试做的演示。 不幸的是,控制台上没有任何东西被发射 有任何想法吗? var express = require('express') ; var app = express(); var http = require('http'); var mongod = require('mongodb'); var server_conf = new mongod.Server('localhost', 27017, {auto_reconnect:true}); //dummy logger var logger = { error:function(message, object) {console.log('anything')}, log:function(message, object) {console.log('anything')}, debug:function(message, object) {console.log('anything')}} var db_container = {db: new mongod.Db('test', server_conf, {w:1,journal:true, native_parser:true, logger: logger})} app.use(express.bodyParser()); […]

附加更多的属性,从NodeJS(快速)+ MongoDB检索结果 – 模拟SQL连接

有人能给我解决以下情况的解决办法吗? 我有一个用nodeJS express框架编写并使用MongoDB集合的日志应用程序。 我设法从一个集合中获得结果,但我想迭代结果,根据第一个查询中的引用ID查询另一个集合,并将更多的值附加到初始结果中,然后将响应发送到客户端。 我会粘贴我现在编码,但我不能得到它的工作。 我要么做错了,要么我想要的逻辑不是正确的。 请帮助我超过理论和事实,我不能使用asynchronousJS函数以外的结果。 提前致谢! 码: exports.findLogs = function(req, res) { var params = req.body; var query = req.query; var coll = params.section; if (coll === undefined) { coll = 'traces'; } db.collection(coll, function(err, collection) { collection.count(function(err, count) { var criteria = { 'limit': limit, 'skip': skip, 'sort': [[options.sortname, options.sortorder]] } collection.find({}, […]

独特的索引不是那么独特

我试图故意创build并尝试在MongoDB的唯一索引上编写一个副本用于testing目的。 我的代码基本上是: db.collection("foo").ensureIndex({a: 1}, {unique: true}, function () { db.collection("foo").insert({a: "foo"}, function () { db.collection("foo").insert({a: "foo"}); }); }); 但是,这不会以任何方式失败。 如果我连接到我的数据库并运行db.foo.find({a: "foo"})我会在运行后find两个结果。 这表示{unique: true}工作不正常/没有做任何事情/ etc。 使用createIndex也不起作用。 我是否正确使用MongoDB唯一索引?

node.js / mongodb文件结构

我试图设置这个简单的NodeJS / mongodb应用程序,我有我的文件结构是这样的: server.js | +-routes/menu.js +-routes/cases.js 在我的server.js中,我声明了如下所示的mongodbvariables: var express = require('express'), mongo = require('mongodb'), Server = mongo.Server, MongoClient = mongo.MongoClient, Db = mongo.Db, http = require('http'), app = express(), httpServer = http.createServer(app), bodyParser = require('body-parser'), server = new Server('host.mongohq.com', 10066, {auto_reconnect : true}), db = new Db('myDb', server); db.open(function(err, client) { client.authenticate('myUser', 'myPassword', function(err, […]

如何从node.js URLparameter passingmongodb匹配条件

我有一个网页,用户selectvariables来过滤和获取数据库值。 我试图传递$匹配条件variables如下,但我没有得到任何结果回来 url是:example.com?gender=M&date_from=20100101&date_to=201140101 我通过req.query循环来构build匹配条件string。 var matchQuery = []; for (var param in req.query) { qString = "{'" + param + "' : '" + req.query[param] + "'}"; matchQuery.push(qString); } var strmatchQuery = matchQuery.toString(); 这将输出strmatchQuery为{'gender':'M'},{'date_from':'20100101'},{'date_to':'20140101'} 然后我调用mongodb聚合函数 dbmodel.aggregate( { $match: { $and: [ strmatchQuery ]} } , { $group : { _id : "$orderyear", totalorders : { […]

如何获取具有非唯一数组元素的文档?

我有以下的MongoDB文档: { _id: ObjectId('09de14821345dda65c471c99'), items: [ _id: ObjectId('34de64871345dfa655471c99'), _id: ObjectId('34de64871345dfa655471c91'), _id: ObjectId('34de64871345dfa655471c99'), ] }, { _id: ObjectId('09de14821345dda65c471c98'), items: [ _id: ObjectId('24de64871345dfa61271c10'), _id: ObjectId('24de64871345dfa61271c11'), _id: ObjectId('24de64871345dfa61271c11'), ] }, { _id: ObjectId('09de14821345dda65c471c07'), items: [ _id: ObjectId('24de64871345dfa61271c05'), _id: ObjectId('24de64871345dfa61271c06'), _id: ObjectId('24de64871345dfa61271c07'), ] } 我需要find重复项目数组元素的所有文件。 所以从上面的文件我想得到以下结果: db.collection.documents.find({/** need query*/}).toArray(function (err, documents) { console.dir(documents); // documents with id's 09de14821345dda65c471c99 and […]

MongoDB / Javascript范围问题

我正在连接并使用Node / MongoDB进行插入,但由于范围问题,我无法从函数访问连接。 任何想法如何使'数据库'variables全球范围? mongodb.connect("mongodb://localhost:27017/userDB", function(err, db) { if(!err) { console.log("We are connected"); } else { console.log(err); } }); function RegisterUser(user, pass) { var collection = db.collection('users'); var docs = [{username:user}, {password: pass}]; collection.insert(docs, {w:1}, function(err, result) { collection.find().toArray(function(err, items) {}); socket.emit('message', items); }); } /var/www/baseball/app.js:80 var collection = db.collection('users'); <–db is not defined ^ […]

将JavaScript对象转换为Bson

我有以下的JavaScript对象,我怎么能将它转换为BSON插入MongoDB(并在ISODate中trasform那些datestring)? { name: 'Event 4', personsMax: 2, begin: '2014-09-22T19:00:20.000Z', end: '2014-09-22T21:00:20.000Z', creator: 'Jack', created: '2014-09-22T14:52:20.517Z', refDate: '2014-10-08T00:00:00.000Z', whoIsIn: { jack: true }, id: 4 } 我使用的是nod.js + node-mongodb-native客户端。 在mongodb中的db.insert之后,我有: db.test.find(); { "name" : "Event 4", "personsMax" : 2, "begin" : "2014-09-22T19:00:20.000Z", "end" : "2014-09-22T21:00:20.000Z", "creator" : "Jack", "created" : "2014-09-22T14:52:20.517Z", "refDate" : "2014-10-08T00:00:00.000Z", "whoIsIn" : […]

来自MongoDB集合中各个字段的不同值

我正在使用node-mongodb-native使用节点js来引发mongodb查询。 有一个集合名称“位置”,它具有以下字段: sublocality1 , sublocality2 , sublocality3 , city 。 我想从这些领域取得总体不同的价值观。 例如:文件: { 'sublocality1':'a', 'sublocality2':'a', 'sublocality3': 'b', 'city': 'c' } { 'sublocality1':'b', 'sublocality2':'a', 'sublocality3': 'b', 'city': 'a' } 该查询应该返回 ['a' , 'b', 'c'] 我试过以下: Run distinct queries for each of the fields: collection.distinct('sublocality1',..){}, collection.distinct('sublocality2',..){}, collection.distinct('sublocality3',..){}, collection.distinct('city',..){} 将这些查询的结果插入到列表中,然后在列表中search不同的项目。 我可以优化这个吗? 是否有可能运行一个单一的查询?

MongoDB副本集写入node.js

我使用mongodb本地驱动程序node.js来连接到3节点(PRIMARY和两个SECONDARIES)的副本集,如下所述: http : //mongodb.github.io/node-mongodb-native/2.0/api/MongoClient.html var MongoClient = require("mongodb").MongoClient; var url = "mongodb://admin:pass@hostname:27017"; var options = { db: { readPreference: 'primaryPreferred', slaveOk: true }, replSet: { replicaSet: 'rs0' }, server: { w: 1, autoReconnect: true }; MongoClient.connect(url, options); 请注意, slaveOk: true没有logging,没有它我继续得到slaveOk是错误的错误。 我一直得到Potentially unhandled rejection [83] MongoError: not master写。 你可以请帮忙连接到节点应用程序副本集? 也许我会指定所有连接的服务器? 但是在文档中说驱动程序足够聪明,可以在PRIMARY更改时重新连接。