我的数据库中有2个收藏。
起初我有“tvs”系列有电视列表,第二个我有tvcomments,其中包含每个电视的评论。
我想用一个新字段更新“tvs”集合,该字段显示每个电视的评论数量。
“tv”字段是“tvs”系列中引用评论电视的“_id”字段。
我证明代码低于标准,但它没有作用
db.tvs.update( { $set: { numcomments: db.tvcomments.find( { tv: this._id } ).count() } }, { multi: true } )
答案 0 :(得分:1)
Mongo中的默认_id
键是Mongo对象ID。您必须将this._id
转换为ObjectId:ObjectId(this._id)
。
您的命令变为:
db.tvs.update( { $set: { numcomments: db.tvcomments.find( { tv: ObjectId(this._id) } ).count() } }, { multi: true } )
ObjectId是一个12字节的BSON类型,使用:
构造
- 一个4字节的值,表示自Unix纪元以来的秒数,
- 一个3字节的机器标识符,
- 一个2字节的进程ID,
- 一个3字节的计数器,以随机值开始。
在documentation中查看更多信息。