Articles of mongoose

是否有可能传递一个额外的参数到mongoose更新callback

我有mongoose更新调用,并想传递额外的参数…像这样: 试图通过isLoopOver UserInfo.update({_id: userInfo._id}, {'value': someval}, function(err, numAffected, isLoopOver ) { console.log('IsLoopOver ' + JSON.stringify(isLoopOver) ); if (isLoopOver){ doSomething(isLoopOver); } }); 试过以上,但我得到一个对象(在callback内)如下: {"updatedExisting":true,"n":1,"connectionId":117,"err":null,"ok":1} 不知道为什么它显示从mongo状态。 问题:如何通过callback传递额外的参数?

在MongoDB中设置伪造的数据进行testing

我们有一个项目,我们需要创build一个虚假的数据库和假数据进行functiontesting。 最初,我们开始使用mongoose创build实体的脚本,初始化它们并保存它们。 var StudentA = new Student(); StudentA.name = "Bob"; StudentA.surname = "Marley"; StudentA.save(); 随着应用程序的增长和文件之间的关系增加,这个脚本变得绝对乱七八糟。 现在它成为了我们投资应用程序开发的瓶颈。 问题是,有没有更好的方法来做到这一点? 例如一个以更结构化的方式填充数据库的库? 或者,我们应该像csv文件parsing文件,然后推到mongo? 问题在于mongodb,但它可以推广到任何需要填充假数据的NO-SQL数据库。 (对于RDBMS来说,使用SQL语法更简单)

Nodejs Mongoose保存模型undefined不是一个函数

我使用Nodejs Express路由和Mongoose来保存数据。 我做了核心路线CRUD操作没有问题。 但是,当我尝试在模型的某个字段上执行某些操作,然后尝试使用model.save保存模型时,它会提到.save()方法:“undefined不是函数” 所以,这是代码。 代码段(1)工作得很好: router.put('/:myId', function (req, res, next) { var ourUpdateData = req.body; Model.findOne({myId: req.params.myId.toString()}, function (err, foundModel) { if (err) throw err; if (ourUpdateData.fieldA) foundModel.fieldA = ourUpdateData.fieldA; if (ourUpdateData.fieldB) foundModel.fieldB = ourUpdateData.fieldB; if (ourUpdateData.fieldC) foundModel.fieldC = ourUpdateData.fieldC; if (ourUpdateData.fieldD) foundModel.fieldD = ourUpdateData.fieldD; if (typeof ourUpdateData.fieldArray === "object") ourUpdateData.fieldArray = ourUpdateData.fieldArray; foundModel.save(function […]

如何通过mongoose中的var来设置关键字,Node.js?

我不设置variables的关键更新,我的代码… mongoose.model('members', Schema).update({ id: '0' }, {$push: {'this_key': 'value'}} , [], function (err, data){}); 如果我使用 var this_key = 'test'; 但是this_key不是'testing'它是'this_key'中的 mongoose.model('members', Schema).update({ id: '0' }, {$push: {this_key: 'value'}} , [], function (err, data){}); 我需要得到一些值分机POST []设置variablesthis_key, 如何通过mongoose中的variables来设置关键字,Node.js?

Node + Express Mongoose子集合文档插入

我有一个Node + Express项目正在运行,我正在构build一个基本的博客系统,具有以下模式和模式 var Post = mongoose.Schema({ title: String, body: String, author: String, dateCreated: {type: Date, default: Date.now }, comments: [{author: String, body: String, date: Date}] }); var Post = db.model('Post', Post); 我通过以下代码接受发布请求,并从中更新标题,正文和作者 app.post('/addpost', function(req,res){ console.log(req.body.post); var post = new Post(req.body.post); post.save(function(err){ if(!err){ res.redirect('/'); }else{ res.redirect('/'); } }) }) 我有的问题是,如何使用我已经开发的结尾添加注释到模式? req.body.post输出 { title: 'Hello World', […]

Mongoose中的方法和静态方法有什么区别?

方法和静态之间有什么区别? Mongoose API将静态定义为 Statics are pretty much the same as methods but allow for defining functions that exist directly on your Model. 究竟是什么意思? 现有的模型是什么意思? 来自文档的静态代码 AnimalSchema.statics.search = function search (name, cb) { return this.where('name', new RegExp(name, 'i')).exec(cb); } Animal.search('Rover', function (err) { if (err) … })

$ unset是空的。 您必须像这样指定一个字段:{$ unset:{<field>:…}}

mongodb版本3.0.1 mongoose版本4.0.3 我正在尝试这样做: groupsModel.updateQ({_id:group._id},{ $unset:{"moderators":""}, $set:{"admins":newAdmins} }) 从catch说明我得到一个MongoError '\'$unset\' is empty. You must specify a field like so: {$unset: {<field>: …}}' 但它不是空的。 moderators ,但是,不在架构,这就是为什么我想要删除它。

在查询的时候用mongoose来降低内存使用的方法

我正在研究节点后端,试图通过mongoose来优化对mongodb的非常大的查询。 预期的返回大小是相当可观的,但是由于某种原因,当我发出请求时,节点开始消耗大量的内存,例如200MB +用于一个大的请求。 考虑到大多数情况下,回报的规模小于10mb,这似乎并不正确。 在完成之后,它也拒绝释放内存,我知道这可能只是V8 GC的默认行为,但是我担心的是,单个find()请求会消耗大量的内存。 我通过testingfind()调用来隔离它。 一旦完成了调用,它将执行一些后处理,然后将数据发送到一个callback函数,全部使用匿名函数。 我曾尝试使用查询stream而不是model.find(),但它显示没有真正的改进。 环顾四周没有得到任何回应,所以我会问,有没有一种已知的方法来减less,控制或优化mongoose的内存使用? 有谁知道为什么如此多的内存被用于一个单一的电话? 编辑 根据Johnny和Blakes的build议,使用lean()和streaming的混合,并使用暂停和恢复,极大地改善了运行时和内存的使用。 谢谢!

用mongoose api和nodejssearch数据库?

即时通讯使用nodejs和mongoosebuild立一个API,即时通讯尝试做searchfunction,但它似乎去查询任何东西,代码。 app.get('/search', function(req,res){ return Questions.find({text: "noodles"}, function(err,q){ return res.send(q); }); }); 它不给我任何结果,我知道他应该至less有4个结果从这个查询,thiers 4个问题数据库文件中的单词“noodles”,一切正在工作的数据库连接和我的节点服务器

Mongoose限制查询1000结果,当我想要更多/所有(从2.6.5迁移到3.1.2)

我将我的应用程序从Mongoose 2.6.5迁移到3.1.2,并且遇到了一些意想不到的行为。 即我注意到,查询结果自动被限制为1000条logging,而几乎所有的东西都是一样的。 在我的代码(下面)中,我设置了一个值maxIvDataPoints ,它限制了返回的数据点的数量(最终发送到客户端浏览器),并将该值设置为1500.我使用计数查询来确定总数结果,然后使用计数和maxIvDataPoints的值来限制实际查询结果的后续mod,以确定mod的值。 我正在运行节点0.8.4和mongo 2.0.4,在coffeescript中编写服务器端代码。 在安装mongoose 3.1.x之前,代码正常工作,每次只返回1500个数据点。 安装完3.1.2后,我每次都得到1000个数据点(假设指定范围内有1000个以上的数据点)。 结果被截断,所以数据点1001到~1500不再被返回。 似乎可能会有一些设置在某个地方来支配这种行为,但我无法在文档中find任何内容,在此处或在Google小组中。 我仍然是一个相对n00b,所以我可能错过了一些明显的东西。 DataManager::ivDataQueryStream = (testId, minTime, maxTime, callback) -> # If minTime and maxTime have been provided, set a flag to limit time extents of query unless isNaN(minTime) timeLimits = true # Load the max number of IV data points to be displayed from […]