Tag: mongoose

mongoose条件填充子文档

我有一个模式,看起来像这样: var UserSchema = new Schema({ name : { type: String, required: true }, email : { type: String, lowercase: true }, fences : [{type: Schema.Types.ObjectId, ref: 'Group'}] }); var GroupMemberSchema = new Schema({ user : { type: Schema.Types.ObjectId, ref: 'User', required: true }, status : { type: String, default : 'Invited' } }); var […]

Mongoose / MongoDB更新不起作用

我知道这个问题已经在这里被打死了,但我已经尝试了一切,无法解决这个问题。 这让我发疯。 我有一个看起来像这样的模型: customer { email: String, password: String, addresses: [addresses_schema] } 和addresses_schema看起来像 address { addr1: String, … Other address fields primary_address: Boolean } 现在,我想更新一个用户的特定地址logging,以使primary_address为true。 所以我这样做: var modifyUser = function(address_id){ User.findOne( { email: email } ).then(function(user){ user.update({ 'addresses._id': address_id }, { $set: { 'addresses.$.primary_address': 'true' } } ) .then(function(){ console.log('Should eventually reach here'); }).catch (err) […]

mongoose更新总是给我TypeError:不能设置未定义的属性'__v'

我试图更新一个socketId为''每当用户断开连接。 但不知何故,我总是得到这个错误 update.$setOnInsert[this.schema.options.versionKey] = 0; ^ TypeError: Cannot set property '__v' of undefined 例如,如果有人被断开,我的目标 socketId = ZH_Ic0zD8QkmNYuJAAAE; will be socketId = ''; 这是代码 socket.on('disconnect', function() { console.log(socket.id); var disconnectSocketId = ''; User.findOneAndUpdate({socketId: socket.id}, disconnectSocketId, {upsert: true, new: true}, function(err, doc) { if (err) { return console.error } console.log(doc.socketId); }); });

在Mongoose的模式中使用短字段名称是可取的吗?

也许与我昨天在这里问的未答复的问题有关是否build议在Mongoose的模式中使用短字段名称的问题? 根据这里的文章 ,更长的字段名称会在服务器的硬盘中产生更大的数据库,以及内存中使用的任何caching。 真的吗? 为什么Mongoose的devise者没有使用某种字段名称映射机制来节省数据库空间?

dynamic定义mongoose模型方法

我是在一个function的情况下,能够根据不同的情况进行search。 它返回相同的数据集,它只是search不同的字段:userId或tagId。 因此,在我的代码中,我有这样的东西: var findByMethod; if (searchBy === 'userId') { findByMethod = UserArticleModel.findByUser; } else { findByMethod = UserArticleModel.findByTag; } findByMethod(idToSearch, function (err, articles) {…}); findByUser和findByTag是findByTag中定义的静态方法 UserArticleModel.js var mongoose = require('mongoose'); var userArticleSchema = new mongoose.Schema({ … } }); userArticleSchema.statics.findByUser = function (userId, callback) { this.find({userId: userId}, function () {…}); }; userArticleSchema.statics.findByTag = function (tagId, […]

仅在mongoose中select子文档数组列表

我的集团collections是这样的 [ { "_id": "55fdbaa7457aa1b9bd7f7cf7", "group_name":"Tango Charli", "group_desc":"This group is for chatting", "group_admins": [ { "_id": "55ff7fca8d3f6607114dc57d", "user_id": "55ff7fca8d3f7607114dc57e", "name": "James", }, { "_id": "55ff7fca8d3f6607114dc57d", "user_id": "55ff7fca8d3f7607114dc57e", "name": "James", } ] }, { "_id": "55fdbaa7457aa1b9bd7f8de8", "group_name":"Love zone", "group_desc":"This group is for making love and chatting", "group_admins": [ { "_id": "55ff7fca8d3f6607114dc57d", "user_id": "55ff7fca8d3f7607114dc57e", "name": "Mike", }, […]

在一个查询mongoose多更新

是否有任何方式来执行这个查询在mongoose? 这个多重更新是可能的从mongodb v2.6 { update: <collection>, updates: [ { q: <query>, u: <update>, upsert: <boolean>, multi: <boolean> }, { q: <query>, u: <update>, upsert: <boolean>, multi: <boolean> }, { q: <query>, u: <update>, upsert: <boolean>, multi: <boolean> }, … ], ordered: <boolean>, writeConcern: { <write concern> } } 我发现这个话题,但它的相当古老: Mongodb多不同的值更新 thx每个人的build议

mongooseSSL,连接不被接受

所以我花了一点时间来设置SSL和授权的repl集。 但是,我已经build立并最终工作,并可以通过命令行连接提供适当的参数。 我试图用mongoose做同样的事情,但是我不断收到mongodb日志中的错误,如下所示: AssertionException handling request, closing client connection: 17189 The server is configured to only allow SSL connections即使我指定所有ssl选项。 我的代码如下: var m = require('mongoose'); var key = fs.readFileSync('/home/node/mongodb/mongodb.pem'); var ca = [fs.readFileSync('/home/node/mongodb/ca.pem')]; var o = { server: { sslValidate:true, sslCA: ca, sslKey: key, sslCert:key }, user: '****', pass: '****' }; m.connect('mongodb://dbAddr/dbName', o) 我已经尝试设置sslValidate为false ,同样的问题。 我已经尝试了没有CA,证书和/或密钥在多个组合。 […]

Mongoose如何添加一个方法来模拟每次更新或创build文档时执行的模式?

我有一个mongoose模式,其结构有点像这样 – var SaleSchema = new Schema({ name: String, creation_datetime: {type: Date, default: Date.now}, account_from: {type: Schema.ObjectId, ref:'Account'}, account_to: {type: Schema.ObjectId, ref:'Account'}, transaction: { items: [{ ref: { type: Schema.ObjectId, ref:'Item' }, name: { type: String }, quantity: { type: Number }, cost: { type: Number }, discount: { type: Number }, pricePerUnit: { type: […]

我正在使用mongoose,并希望去所有的成员,并单独使用每个研究的结果

我正在使用mongoose,并希望去所有的成员,并分别使用每个研究的结果: 每次我使用Model.find() ,我都会得到null。 我不知道如何单独search所有元素。 下面的代码包含了我所做的 async.waterfall([ function (done) { user.find({}).exec(function (err, user) { done(err, user); }); }, function (user, done) { console.log(user.firstName); } ], function (err) { console.log(err); }); 谢谢你的帮助!