javascript - Mongoose ,从子文档中提取

标签 javascript node.js mongodb mongoose

这是我的文档:

{ 
  password: '87654321',
  title: 'Organization A',
  members: 
   [ { tier: 1,
       joinedDate: Sun May 12 2013 00:00:00 GMT+0200 (CEST),
       user: 543fc462ed385e5e77a98d56 
     },
     { tier: 2,
       joinedDate: Sat May 11 2013 00:00:00 GMT+0200 (CEST),
       user: 543fc462ed385e5e77a98d57 
     },
     { tier: 3,
       joinedDate: Fri May 10 2013 00:00:00 GMT+0200 (CEST),
       user: 543fc462ed385e5e77a98d58 
     }
    ]
}

我想编写一个查询来提取具有给定用户 _.id 的成员

pull 命令可能是我应该使用的命令

http://mongoosejs.com/docs/api.html#types_array_MongooseArray-pull

mongoose.model('organization').findOne({_id:user.organization}, function(err, org){
      org.members.pull({'user._id':user._id});
      org.save();
    })

它不起作用。我做错了什么?

更新

我的模式:

var organizationSchema = new Schema({
  title: String,
  password: { type: String, required: true, index: { unique: true } },
  members: [
    {
      tier: { type: Number, required: true, min:1, max:4},
      joinedDate: Date,
      user:{
        type: Schema.ObjectId,
        ref: 'user',
        required: true,
        unique:true
      }
    }
  ]
});

最佳答案

MongooseArray#pull 方法似乎只有在您的元素具有 _id 属性时才有效。

我发现直接调用 update 可以更容易避免这些意外:

mongoose.model('organization').update(
    {_id: user.organization},
    {$pull: {members: {user: user._id}}},
    function(err, numAffected) { ... }
);

关于javascript - Mongoose ,从子文档中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405798/

相关文章:

mongodb - 汇总返回特定字段

sql - 在mongo中优先执行查询

mongodb - 从请求中序列化一个表单并放入 mongo

javascript - 如何确保在触发 Web 分析代码之前发生 JS 重定向?

javascript - Dreamweaver CC 中奇怪的 Javascript 验证

javascript - 怎么修? Chrome控制台: ERR_UNSAFE_REDIRECT

javascript - 单击按钮后关闭模式

javascript - 如何在js中创建多个随机数数组?

javascript - 为什么 "for (let i..."中的 i 有时表现得像 block 作用域,但其他时候却不然

mysql - 如何设置查询不接受不存在的字段