mongoose数组嵌套如何操作
发布于 11 年前 作者 huanghaiyang 15299 次浏览 最后一次编辑是 8 年前

先说问题: 有很多情况下需要数组内在嵌套一个数组,比如: 一个用户下面有一个字段 // 书籍标签 tags: [{ name: String, memo: String, bookids: [{ type: mongoose.Schema.Types.ObjectId, ref: ‘book’ } ] } ] 表示一个用户有很多的标签,每个标签下边有很多他收藏的书籍信息 我想在插入标签并插入书籍信息 如下: // 设置书籍的标签信息 User.prototype.setUserBookTags = function(userid, bookid, tags, callback) { // 拆分标签字符串并重组 var tags_ = []; var arr = tags.split(’,’); for (var i = 0; i < arr.length; i++) { tags_.push({ name: arr[i], bookids: [bookid] }); } // 更新标签信息 UserModel.update({ id: userid }, { $pushAll: { tags: tags } }, { safe: true, multi: true }, function(err, user_) { if (err) return callback(err); if (user_) return callback(err, user_); }); } 这个是成功的,新建了一个书籍标签并且将书籍id插入到了标签数组内 问题来了: 怎么将书籍id从书籍标签中移除呢? 求大家给个方法或者思路

4 回复

我的思路: find --> modify --> save(update)

已经这么做了,但是感觉不太好,希望能从语法或者api下手 mongodb好像没有提供深层数组修改的语法,查询的倒是有

怎么pull? 这样:pull : {‘tags.bookids’ : bookid} ?

回到顶部