Articles of mongoose

mongoose不会保存大文本

我试图保存一个非常大的文本到我的MongoDB数据库,但它崩溃了。 我试图build立一个片段pipe理器,这是我的错误代码: { [MongoError: Btree::insert: key too large to index, failing beverages.recipes.$code_1 3271 { : "var gulp = require('gulp'); var source = require('vinyl-source-stream'); var browserify = require('browserify'); var browserSync = require('browser-sy…" }] name: 'MongoError', message: 'Btree::insert: key too large to index, failing beverages.recipes.$code_1 3271 { : "var gulp = require(\'gulp\');\nvar source = require(\'vinyl-source-stream\');\nvar browserify = […]

以sorting的forms从多个文档中返回内部数组元素

hyy在那里,我的collections是这样的,我想按照date的sorting顺序获得特定blog_id的所有评论列表。 [ { "_id" : ObjectId("565f0f5d77f0c7bd11bbadd8"), "blog_id" : ObjectId("56587befdb7224110f007233"), "comments" : [ { "user_id" : ObjectId("562fa014888806820e21e0df"), "user_full_name" : "Niroj Paudel", "comment" : "pradip is bhole baba", "_id" : ObjectId("565f0f5d77f0c7bd11bbadd9"), "dt" : ISODate("2015-12-02T15:33:49.578Z") }, { "user_id" : ObjectId("562fa014888806820e21e0df"), "user_full_name" : "Niroj Paudel", "comment" : "honkog pokhara… he he ha ha", "_id" : ObjectId("565f1034fd07cbfc1129db0b"), "dt" : ISODate("2015-12-02T15:37:24.581Z") […]

如何获得Express来返回刚刚在MongoDB中删除的对象

随意让我知道这是不是一个普遍的做法 – 我是一个相当新的程序员 – 但我想我以前见过的API,当你提交一个DELETE请求到资源(/ todo / 1234 ),一些服务器将返回刚刚在响应中删除的对象。 那是一件事吗? 如果是这样,我会有兴趣学习如何做到这一点。 这是我有: .delete(function (req, res) { Todo.findById(req.params.todoId).remove(function (err) { if (err) res.status(500).send(err); res.send("Todo item successfully deleted"); }); }); 此代码确实删除了该项目,但我想返回在响应中删除的项目而不是string消息。 如果这是一个正常/好的事情要做。 如果因为某种原因不正常或者不好,请告诉我为什么,我会继续前进。 或者也许有一个更常见的方法。 这是我在RFC 7231文档中find的内容: 如果一个DELETE方法被成功应用,原始服务器应该发送一个202(接受的)状态码,如果这个动作可能成功但是还没有被执行,一个204(无内容)状态码,如果这个动作已经被执行,信息将被提供,或者如果动作已经被执行并且响应消息包括描述状态的表示,则提供200(OK)状态码。 我很难解释200响应是什么意思 – 发送一个string消息( Success! )还是一个包含消息属性( {message: "Success!"} )的对象是否只有犹太人? 或者你可以在那里做任何你想做的事情? Express使用Mongoose的最佳做法是什么? 在此先感谢您的帮助,并为HTTP我的noobness抱歉。

如何在特定年份使用mongoose条件进行分组

我不得不使用mongoose组合来计算特定年份的计数和合计函数,但是我并没有使用条件来分组特定年份,我必须使用下面的代码, Opp.aggregate([ {$project:{ _id: {year: {$year: '$HireDate'}}, hireDateValue: {year: {$year: '$HireDate'}}, hireDateCount: {$cond: [{"$and":[{"$or":[{"$eq":["$HireDate","1994-01-17 00:00:00.000"]}]}]}, 1, 0]} }}, {$group: { _id: '$hireDateValue', count: {$sum: '$hireDateCount'} }}, {$sort: {_id: 1}} ], function (err, dateResult) { resultAggr[0].items = dateResult; res.send([resultAggr]); }); 我的回复, [ [ { "id":7, "_id":"HiredDate", "items":[ {…}, { "_id":{ "year":1990 }, "count":0 }, { "_id":{ […]

在聚合过程中,mongoose / mongodb是否可以访问模式中的对象引用?

我正在处理从mongo数据库中的2个不同的obj参考中读取的查询。 我将使用一个简单的例子,即时通讯寻找。 我有3个模式: User = new Schema({ places:[{type: Schema.Types.ObjectId, ref:'Place'}], shouts:[{type: Schema.Types.ObjectId, ref:'Shout'}] }); Place = new Schema({ name:String, description:String, }); Shout = new Schema({ content:String, }); 我最大的问题是如果mongoose或mongodb在执行聚合方法时有权访问objectId引用。 请允许我详细说明。 module.exports.askForShoutInPlace = function(req, res){ var pname = new RegExp(req.params.pname, 'i'); User.aggregate( [ {'$match':{ 'places':{ '$elemMatch':{'name':pname} } }, {'$project':{ shout:'$shouts'} }, {'$unwind':'$shouts'}, {'$group':{_id:'$shouts'}} ]).exec(function(err, results){ res.send(results); }); […]

如何获得今天与mongoose创build的文件数量?

如何获得今天与mongoose创build的文件数量? 我正在使用MEAN堆栈。 我读了Mongoose Api Docs,但是什么都不明白:/

Mongoose QueryStream.pause()不暂停?

节点v.4.2.3和mongoosev.4.3.6 我必须遍历一个大的(> 10k文档)集合,并处理每个文档。 阅读关于如何处理这种迭代的文档,我偶然发现了QueryStream,我认为这将解决我所有的问题。 function progress(total, t, current) { process.stdout.clearLine(); // clear current text process.stdout.write(Math.round(t / total * 100) + '% ' + t + ' / ' + total + ' ' + current); process.stdout.cursorTo(0); } function loadBalance(current, stream) { if(!stream.paused && current > 50) { log('DEBUG', 'loadBalance', 'pause'); stream.pause(); } else if (stream.paused […]

mongoose聚合方法不起作用

我有这些行: Score.find({gameId : gameId}).exec(function(err,obj){ console.log("find length : " + obj.length); }); Score.aggregate([ {$match: {gameId: gameId}} ], function (err, result) { console.log('result is : ' + JSON.stringify(result)); console.log('is there any error : ' + err); }); 这些线的输出是 result is : [] is there any error : null find length : 1 我不明白,为什么聚合的“匹配”方法不能按预期工作 – 查找所有匹配属性的文档。 如果文档确实存在并且确实存在,我将Score.find添加到相同的“body”中以查明。 PS: […]

为什么Mongodb更新工作,但mongoose不会?

当我查询monodb shell时,我能够更新文档。 这是我使用的mongodb命令: db.users.update({name:"bob"}, {$set: {email:"newEmail@gmail.com} }) 但是当我尝试用mongoose更新它时,它不起作用。 我在想什么? 这是mongoose的代码: //创build用户架构 var userSchema = mongoose.Schema({ name: String, email: String }, {collection: "users"}); //创build一个模型 var userModel = mongoose.model("userModel", userSchema); //更新文档 userModel.update({name:"bob"}, {$set: {email:"newEmail@gmail.com"}} );

有没有办法改变mongoDB结构(从嵌套/embedded文档到对象引用列表),同时保持数据?

我有一个mongoDB数据库,由nodejs通过mongoose使用,它涉及嵌套/embedded式文档,如下所示: "people" : [ {"name" : "james", "_id": ObjectId("randomrandom1")}, {"name" : "arianna","_id": ObjectId("randomrandom2")}, {"name" : "kyle","_id": ObjectId("randomrandom3")} ] 我需要改变结构,所以我有单独的“人”文件,人们将包含一个人的ObjectId的数组: "people" : [{type:mongoose.Schema.Types.ObjectId, ref: 'Person'}] 每个人的文件都会包含詹姆斯,阿里安娜和凯尔的信息 – 这样我就可以在他们需要的时候填充他们。 我需要在维护已经input的文档的同时更改数据库结构。 有什么办法可以做到这一点?