Articles of mongoose

Mongoose查询:查找数组中的元素

mongoose/ Mongo noob在这里: 我的数据 这里是我的简化数据,每个用户都有自己的文档 { "__v" : 1, "_id" : ObjectId( "53440e94c02b3cae81eb0065" ), "email" : "test@test.com", "firstName" : "testFirstName", "inventories" : [ { "_id" : "active", "tags" : [ "inventory", "active", "vehicles" ], "title" : "activeInventory", "vehicles" : [ { "_id" : ObjectId( "53440e94c02b3cae81eb0069" ), "tags" : [ "vehicle" ], "details" : [ { […]

mongoose的行为和模式

目前我正在学习nodejs和mongodb,有两件事让我迷惑。 (1),当使用新的Schema和模型名称(不在db中)时,名称被改为复数forms。 例: mongoose.model('person', personSchema); 在数据库中,该表将被称为“人”。 这难道不容易混淆新开发者,为什么他们这样实现呢? (2)第二件事是,每当我想引用mongoDb中的现有模型(假设在db中,存在一个名为people的表)。 然后在我的nodejs代码中,我仍然需要定义一个Schema来创build一个引用这个表的模型。 personSchema = new mongoose.Schema({}); mongoose.model('person',personSchema); 不寻常的是,我如何定义模式似乎并不重要,它可以像上面那样是空的,或者填充随机属性,但是模型总是会得到正确的表,并且CRUD操作正常执行。 那么除了定义表结构来创build新表之外,Schema的用法是什么? 非常感谢,

mongoose:不允许更新特定字段

var post = mongoose.Schema({ … _createdOn: Date }); 我想只允许在文档创build时设置_createdOn字段,并且不允许在将来的更新中改变它。 如何在mongoose中完成?

在mongoose中查询虚拟财产

我有一个在我的mongoose模式的虚拟财产,我想知道我是否可以使用此属性查询我的文档。 var PersonSchema = new Schema({ number: {type: Number, required: true}, name: {type: Date, required: true} }); PersonSchema.virtual('capitalCaseName').get(function () { return this.name.toUpperCase(); }); … Person.find({"capitalCaseName": "DANIEL"}).exec(); …

Mongoosestring到ObjectID

我有ObjectId的string。 var comments = new Schema({ user_id: { type: Schema.Types.ObjectId, ref: 'users',required: [true,'No user id found']}, post: { type: Schema.Types.ObjectId, ref: 'posts',required: [true,'No post id found']}…. export let commentsModel: mongoose.Model<any> = mongoose.model("comments", comments); 我如何使用它: let comment = new commentsModel; str = 'Here my ObjectId code' // comment.user_id = str; comment.post = str; comment.save(); 当我创build一个“评论”模型,并分配一个stringuser_id值或后我保存时出错。 我使console.log(comment)所有的数据被分配到variables。 […]

Node.js和JSON.stringify缺less一些来自对象的值/参数

也许我不明白的JavaScript /咖啡脚本以及我想,但是当我这样做: that.thing = thing that.thing.title = "some title" console.log(that.thing.title) console.log(JSON.stringify(that.thing) 我得到输出: 一些标题 { “CREATION_DATE”: “2011-09-09T00:40:03.742Z”, “_ ID”: “4e6960638ec80519a0000013”} 问题是,我似乎失去了标题属性,当我做的string化(后来当function存在,我似乎有其他有趣的问题,我认为必须与'那',这嵌套在多个fxn调用)。 (我现在必须做一个丑陋的解决scheme,我现在在那里解决我的问题。我必须解决的其他问题之前,包括node.js + async + mongoose.find,这是所有内部的async.findEach) 当我做 console.log(that.thing.toJSON) 我得到: 函数(){返回this.toObject(); } 谢谢。

修改mongoose对象文字结果不起作用

可能重复: 为什么不能修改Mongoose查询返回的数据(例如:findById) 首先,我正在查询到mongoDB,得到所有正确的结果,但只有对对象文字的小修改不起作用。 我正在试图做的,是增加新的领域来评论。 我试图使用DBref方法,但它没有工作,所以我现在做2个查询。 var query = Rss.findOne({ _id: itemId}); query.exec(function(err, feed) { if (!err && feed.comments) { console.log(feed.comments.length); for (var index in feed.comments) { var author = feed.comments[index].author; if (author !== undefined) { User.findById(author, function(err, user) { /**Problem is here **/ feed.comments[index].name = 'Some random field'; console.log('Added new field' + util.inspect(feed)); }); } […]

麻烦保存在mongoose3

我试图更新Mongoose.js 3.1.2中的一些内容,我无法得到这两个函数的工作。 任何想法为什么? 谢谢… function(req, res) { Content.findById(req.body.content_id, function(err, content) { // add snippet to content.snippets content.snippets[req.body.snippet_name] = req.body.snippet_value; content.save(function(err) { res.json(err || content.snippets); }); } } function(req, res) { Content.findById(req.body.content_id, function(err, content) { // delete snippets delete content.snippets[req.body.snippet_name]; //content.snippets[req.body.snippet_name] = undefined; <– doesn't work either content.save(function(err) { res.json(err || "SUCCESS"); }); }); } 我的模式看起来像这样: […]

使用MongoDB聚合计算计数和平均值

我有一个简单的数据库布局,像这样: client id sex (male/female) birthday (date) client id sex (male/female) birthday (date) (…) 我试图写一个汇总命令,输出我有多less男女客户,我也想输出男性和女性的平均年龄,不知道我可以做同样的命令或我需要2个独立的? // Count of males/females, average age Clients.aggregate({ $project : {"sex" : 1, "sexCount" : 1, "birthday" : 1, "avgAge" : 1 } }, { $match: {"sex": {$exists: true}} }, { $group: { _id : "$sex", sexCount : { $sum: 1 […]

实例上的Mongoose键/ val不会显示在JSON或控制台中。为什么?

我有一些短暂的mongoose模型的信息。 出于性能的原因,我不希望存储它对模型..但我希望能够提供这个信息给客户端连接到我的服务器,并要求它。 这是一个简单的例子: var mongoose = require('mongoose'), db = require('./dbconn').dbconn; var PersonSchema = new mongoose.Schema({ name : String, age : Number, }); var Person = db.model('Person', PersonSchema); var fred = new Person({ name: 'fred', age: 100 }); Person模式有两个我想要存储的属性(名称和年龄)..这个工作..我们在控制台中看到: console.log(fred); {name:'fred',年龄:100,_id:509edc9d8aafee8672000001} 我确实有一个属性(“状态”),迅速变化,我不想将其存储在数据库..但我想要dynamic跟踪它,并提供给客户端,所以我把它添加到实例作为一个键/ val对。 fred.status = "alive"; 如果我们在添加“alive”键/ val对之后再次查看控制台中的fred ,我们再次看到fred ,但是他的状态并没有显示出来: {name:'fred',年龄:100,_id:509edc9d8aafee8672000001} 然而,键/ VAL对肯定是在那里..我们看到: console.log(fred.status); 呈现: 活 […]