Tag: mongodb

如何通过NodeJs应用程序和模块正确地重用连接到Mongodb

我一直在阅读和阅读,仍然困惑于什么是跨整个NodeJs应用程序共享同一个数据库(MongoDb)连接的最佳方式。 据我所知,连接应该是开放时,应用程序启动和重用模块之间。 我目前的想法是最好的方法是server.js (所有东西都开始的主文件)连接到数据库,并创build传递给模块的对象variables。 一旦连接,这个variables将被模块代码使用,并且这个连接保持打开状态。 例如: var MongoClient = require('mongodb').MongoClient; var mongo = {}; // this is passed to modules and code MongoClient.connect("mongodb://localhost:27017/marankings", function(err, db) { if (!err) { console.log("We are connected"); // these tables will be passed to modules as part of mongo object mongo.dbUsers = db.collection("users"); mongo.dbDisciplines = db.collection("disciplines"); console.log("aaa " + users.getAll()); […]

正确的方法来导入json文件到mongo

我一直在试图用一些导入的数据来使用mongo,但是我无法正确使用我的文档描述。 这是我使用mongoimport导入的.json的一个例子: https ://gist.github.com/2917854 mongoimport -d test -c example data.json 我注意到,尽pipe为每个商店创build了一个对象,但是我所有的文档都被导入到一个独特的对象中。 这就是为什么当我试图find一家商店或任何我想要查询的时候,所有的文档都会被返回。 db.example.find({"shops.name":"x"}) 我想能够查询数据库获取产品的ID使用点符号类似于: db.example.find({"shops.name":"x","categories.type":"shirts","clothes.id":"1"} 问题是所有的文档都像一个单一的对象一样导入。 问题是:如何 我是否需要导入对象来获得我想要的结果?

mongodb失败:连接到数据库服务器的错误:没有可达的服务器

我在Ubuntu14.04服务器上安装了mongodb 我无法通过“mongoimport”,“mongodump”,“mongostat”等连接到mongodb,它总是显示“无法访问服务器” mongoimport –db test –collection restaurants –drop –file dataset.json 2015-08-25T13:08:29.802+0800 [……………………] test.restaurants 0.0 B/11.3 MB (0.0%) 2015-08-25T13:08:30.306+0800 Failed: error connecting to db server: no reachable servers 2015-08-25T13:08:30.306+0800 imported 0 documents 不知何故,我可以连接mongo shell mongo –port 27017 MongoDB shell version: 3.0.6 connecting to: 127.0.0.1:27017/test 起初,我怀疑是否由我的iptables造成的,所以我刷新所有的iptables规则,并创build所有接受的规则,但它仍然是 sudo iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT […]

MongoDB vs. Redis与Cassandra之间的快速写入临时行存储解决scheme

我正在构build一个跟踪和validation广告展示次数和点击次数的系统。 这意味着有很多插入命令(平均每秒90次,峰值为250)和一些读取操作,但重点在于性能,并使其非常快速。 该系统目前在MongoDB上,但自那时以来我已经被介绍给了Cassandra和Redis。 去这两个解决scheme之一,而不是留在MongoDB上是一个好主意吗? 为什么或者为什么不? 谢谢

node.js + express.js:使用mongodb / mongoose进行会话处理

现在我将会话数据存储在与“连接”(express)绑定在一起的“内存存储”中。 但我想/必须改变这个生产。 应用程序正在使用mongodb,我安装mongoose来处理所有的数据库通信。 例如初始化我的应用程序后连接到数据库: var mongo = require('mongoose'); mongo.connect('mongodb://localhost/myDb'); mongo.connection.on('open', function () { app.listen(3000); } 我find了连接mongodb模块,但我不知道如何使用mongoose来实现它,或者如果它实际上是可能的? 我需要添加这样的东西: var mongoStore = require('connect-mongodb'); // … app.use(express.session({ secret: 'topsecret', maxAge: new Date(Date.now() + 3600000), store: new mongoStore({ db: 'myDb' }) })); 或者我必须直接使用mongodb模块第二次定义我的数据库连接?

从JSONstring创buildBSON对象

我有从外部应用程序获取数据的Java应用程序。 传入的JSON在string中。 我想parsing这个string并创buildBSON对象。 不幸的是,在Java的BSON实现中我找不到API。 我有像GSON那样使用外部parsing器吗?

MongoDB:initAndListen中的exception:20试图在只读目录/ data / db上创build一个locking文件,终止

我在根目录下创build/data/db并运行./mongod : [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating [initandlisten] shutdown: going to close listening sockets… [initandlisten] shutdown: going to flush diaglog… [initandlisten] now exiting [initandlisten] shutting down with code:100

使用mongoimport从文件导入json到mongodb

我有我的json_file.json像这样: [ { "project": "project_1", "coord1": 2, "coord2": 10, "status": "yes", "priority": 7 }, { "project": "project_2", "coord1": 2, "coord2": 10, "status": "yes", "priority": 7 }, { "project": "project_3", "coord1": 2, "coord2": 10, "status": "yes", "priority": 7 } ] 当我运行以下命令将其导入到mongodb中时: mongoimport –db my_db –collection my_collection –file json_file.json 我得到以下错误: Failed: error unmarshaling bytes on document #0: […]

编译Mongoose后无法覆盖模型

不知道我做错了什么,这是我的check.js var db = mongoose.createConnection('localhost', 'event-db'); db.on('error', console.error.bind(console, 'connection error:')); var a1= db.once('open',function(){ var user = mongoose.model('users',{ name:String, email:String, password:String, phone:Number, _enabled:Boolean }); user.find({},{},function (err, users) { mongoose.connection.close(); console.log("Username supplied"+username); //doSomethingHere }) }); 这里是我的insert.js var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/event-db') var user = mongoose.model('users',{ name:String, email:String, password: String, phone:Number, _enabled:Boolean }); var new_user = new user({ […]

AutoReconnectexception“主已改变”

在这里理解正确的方法有些麻烦。 我有一个与三个成员(标准的主从奴隶)mongodb副本集的连接。 当主人保持一致时,一切工作正常。 pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test 出于某种原因,当副本设置主要步骤closures时,这会开始抛出一个autoreconnectexception, 即使在select了新的主节点后也不会消失。 现在我意识到,这个例外需要被抓住和处理,很可能等待新的小学被选举。 我所遇到的问题似乎是,一旦select了新的小学,它根本就不在乎。 这个“主人已经改变”的例外不断涌现。 用__dict__打印连接显示所有三个主机。 我试过把replicaset kwarg传递给连接,但是这是一个意外的论点。 这种联系是不是有理由不开始质疑新的小学呢? 编辑: 显然现在在部署服务器上也出现了同样的问题。 如果主服务器发生更改,autoreconnectexception将被抛出,即使在select了新的主服务器之后也不会消失。 Pymongo是2.2版本和mongodb版本2.0.2。 改变在pymongo代码(mongouri与主机列表)中定义连接的方式不起作用。 恢复服务的唯一方法是rs.stepDown()其他主机,直到原始主服务器再次成为主服务器。