0

私のデータベースには2つのコレクションがあります。

最初に、テレビのリストを持つ「テレビ」コレクションがあり、2 番目に、各テレビで行われたコメントを保持する tvcomments があります。

各テレビからのコメント数を示す新しいフィールドで「tvs」コレクションを更新したいと思います。

「tv」フィールドは、コメントされたテレビを参照する「tvs」コレクションの「_id」フィールドです。

以下のコードを証明しますが、うまくいきません

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

1 に答える 1

1

Mongo のデフォルト_idキーは Mongo オブジェクト ID です。this._idObjectId:に変換する必要がありますObjectId(this._id)

コマンドは次のようになります。

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

ObjectId は 12 バイトの BSON タイプで、以下を使用して構築されます。

  • Unix エポックからの秒数を表す 4 バイトの値、
  • 3 バイトのマシン ID、
  • 2 バイトのプロセス ID、および
  • ランダムな値で始まる 3 バイトのカウンター。

詳細については、ドキュメントを参照してください。

于 2013-08-26T11:08:39.110 に答える