Tag: mongodb

检查mongodb服务器是否同步激活

有没有办法同步检查一个mongod实例(使用mongoclient)是否仍在运行? 我在我的mongoclient模块中有一个db.on('close')处理程序,它在mongod正常退出的情况下工作,但是如果我终止服务器进程,我的节点应用程序将完全挂起,无法恢复正常职责。 所有的请求被阻止,没有超时。 当mongod再次启动时,应用程序将正常恢复,所以如果等待时间太长,肯定会有杀死应用程序的情况。 我只能想到做同步做另一个callbackdb.runCommand({serverStauts: 1})肯定会陷入相同的状态。

在与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 谢谢。

尝试使用唯一索引保存mongoose文档时,节点服务器崩溃

我有一个集合,其中有一个领域作为一个独特的领域。 var ProductSchema = new mongoose.Schema({ code: {type:String, required:true}, name: {type:String, default:""} }); ProductSchema.index({ code: 1}, { unique: true }); 当我用一个已经存在的代码创build一个新文档时,服务器崩溃而不是通过callback返回一个错误: module.exports.create = function (params, callback){ var product = new ProductModel(params); product.save(function(error){ console.log(error); callback(error); }); } 这(崩溃)预期的行为或mongoose应通过callback返回一个错误,而不是崩溃? 这是我用相同的代码保存第二个文档时得到的错误: [..path]/server/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:245 throw message; ^ TypeError: Cannot read property '0' of undefined at […path]/server/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection/core.js:114:55 at […path]/server/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1132:7 at […path]/server/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1846:9 […]

在Mongoose中禁用types检查

有没有办法在保存时禁用Mongoose检查types? 我正在将一堆文档转换为更新的格式,因此对于我来说types检查并不是非常重要的(在运行转换脚本之后数据将全部以正确的格式/位置)。 有任何想法吗? 我想过在各种模式中禁用strict选项,但似乎是在架构中没有定义的字段,而不是禁用types检查。

麻烦与Mongoose和Schema.Types.Mixed

我试图有一个完全混合的模型,但不能真正得到它的工作,这里是完整的JavaScript: var mongoose = require('mongoose'), Schema = mongoose.Schema, async = require('async'); mongoose.connect('mongodb://localhost/whatever'); var SomeDocument = mongoose.model('SomeDocument', new Schema({ any: Schema.Types.Mixed }) ); var AnotherDocument = mongoose.model('AnotherDocument', new Schema({ any: Schema.Types.Mixed }, { strict: false } ) ); async.waterfall([ function(cb) { var saveThis = {lets: "have", some: "fun"}; console.log("Trying to save:", saveThis); SomeDocument.create(saveThis, function(err, savedDoc) { […]

TypeError:Object#<Promise>没有方法forEach'mongodb

我正尝试在Visual Studio中使用MongoDB和nodejs将文档从一个集合复制到另一个集合。 这是我想要做的: var newcollection = db.get('mynewdata'); var oldcollection = db.get('myusercollection'); var userName = req.body.username; oldcollection.find({ "username" : userName }).forEach(function (docs) { newcollection.insert(docs); }); 在Mongo网站上,它说,collection.find()应该返回一个应该能够使用forEach()方法的游标。 但是,它并没有返回游标对象,forEach似乎没有为返回的内容定义。 我从主题行得到的错误说: TypeError: Object #<Promise> has no method 'forEach' 任何想法,为什么它给了我这个错误?

Heroku Sails应用程序访问位于mongohq上的mongodb

我们的应用程序(使用sails框架的节点js)试图访问位于MongoHQ上的mongodb。 当应用程序从本地系统运行它工作正常。 但是一旦安装了应用程序,值就不会在mongohq上保存mongodb,而是在heruko中保存某个地方。 在适配器configuration中,js如下 适配器:{'default':'mongo',mongo:{module:'sails-mongo',url:process.env.DB_URL,schema:'true'}} 和DB_URL = mongodb:// AdsPlaces :(编辑)@ kahana.mongohq.com:10091 / AdsPlaces。 包内容 依赖关系:{“sails”:“0.9.8”,“sails-disk”:“〜0.9.0”,“sails-mongo”:“*”,“skipper”:“^ 0.1.8”} 当表单得到保存,然后将值保存在heroku默认位置的某处,而不是在mongodb:// AdsPlaces:(redacted)@ kahana.mongohq.com:10091 / AdsPlaces。 正因为如此,每次在heroku上安装更新的应用程序时,我们的数据都会被删除。 请帮忙

如何使用dot(。)通过Mongoose在Node.js中查询以及如何添加一个空数组

我有以下架构: var userSchema = new Schema({ userID: Number, userName: String, userEmail: String, teams:Array, socialMedias: { fbUID: String, googleUID: String, twitter: String } }); 首先,我如何添加一个空数组? 这是我正在做的以下方式吗? teams:{}, 其次,我正在尝试在我的Node.js中使用Mongoose进行查询,但在点('。')中出现错误: 这是我正在保存的文件: var user = new users({ userID: id, //give the id of the next user in Dbase userName: userName, userEmail: 'userEmail', teams:{}, socialMedias: [{socialMediaType: socialMediaID}] }); 其中userName,socialMediaType和socialMediaID是函数的参数。 所以,我添加这个文档后,我试图做下面的查询: […]

如何使用MongoDB / Mongoose.js查询OR / AND状况?

我如何使用Node.js / JavaScript,MongoDB / Mongoosejs来创build一个查询来input一个或类似的查询条件,并接收一个或多个结果? 像下面这样: User.find({_id: idA OR idB}, function (err, users) { console.log(users[0]); // Is user with idA console.log(users[1]); // Is user with idB } 我怎样才能做到这一点?

使用聚合对嵌套列进行sorting

我有以下查询使用聚合框架在Mongoose中: Comment.aggregate([{ $match: { isActive: true } }, { $group: { _id: { year: { $year: "$creationDate" }, month: { $month: "$creationDate" }, day: { $dayOfMonth: "$creationDate" } }, comments: { $push: { comment: "$comment", username: "$username", creationDate: "$creationDate", } } } }, { $sort: { 'comments.creationDate': -1 } }, { $limit: 40 }], function […]