sql >> データベース >  >> NoSQL >> MongoDB

MongoDBでリストの長さを取得する

    今、私は2つのアプローチで考えることができます:

    1)集約フレームワークの使用:

    db.log.aggregate([ { $unwind : "$entries" }, { $group : { _id : "$_id", entries : {$sum:1}  } }  ]);
    

    2)または、エントリ数を保持するフィールドをドキュメントに追加できます。したがって、新しい値をエントリ配列にプッシュするたびに、カウンタをインクリメントする必要があります。更新は次のようになります:

    db.log.update({ _id : 123 }, { $push : { entries : 'value' }, $inc : { entriesCount : 1 } })
    

    明らかに、ここにはトレードオフがあります。集約フレームワークは、この単純な操作にはコストがかかりすぎます。ただし、ドキュメントにフィールドを追加すると、更新のたびにカウンターが増加するはずです。

    IMHO、回避策のように見えますが、カウンターはより合理的に見えます。



    1. MongoCollection ::Aggregate()は、MongoHQを使用するHerokuPHPでは定義されていません

    2. mongodbシェルクエリでGUIDを使用するにはどうすればよいですか

    3. Redisのデータディレクトリはどこにありますか?

    4. PyMongo:no_cursor_timeout=Trueの場合にカーソルはどうなりますか