如何引用集合中的每个_id

时间:2013-08-26 10:57:03

标签: mongodb

我的数据库中有2个收藏。

起初我有“tvs”系列有电视列表,第二个我有tvcomments,其中包含每个电视的评论。

我想用一个新字段更新“tvs”集合,该字段显示每个电视的评论数量。

“tv”字段是“tvs”系列中引用评论电视的“_id”字段。

我证明代码低于标准,但它没有作用

db.tvs.update( { $set: { numcomments: db.tvcomments.find( { tv: this._id } ).count() } }, { multi: true } )

1 个答案:

答案 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中查看更多信息。