CNode

mongoose数组嵌套如何操作

Hhuanghaiyang发布于13 年前最后回复13 年前4 回复15804 浏览0 收藏

先说问题: 有很多情况下需要数组内在嵌套一个数组,比如: 一个用户下面有一个字段 // 书籍标签 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)

Y
yeefont#1·13 年前

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

H
huanghaiyang#2·13 年前
引用 yeefont我的思路: find modify save(update)

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

S
sogego#3·13 年前

用pull

H
huanghaiyang#4·13 年前
引用 sogego用pull

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

参与回复
登录后即可参与回复。登录