0

私の要件は、クライアントごとに (ロケーション ID + BITMAP) のリストを保存することです。行の例は次のとおりです。

  • キー: クライアント ID
  • 値: < (場所 1、ビットマップ 1)、(場所 2、ビットマップ 2)、...、(場所 N、ビットマップ N) >

どこ

  • 「ビットマップ k」には、クライアントがその場所 k を訪れた日付の履歴が含まれています。

Value の要素の数はクライアントごとに異なり、0 の場合もあれば 100 の場合もあります。次の操作が効率的になるように、このデータを MongoDB に保存する方法を知りたいです。

  1. すべての行のすべての値のペアで特定の BIT をリセットします
  2. 行のいくつかの値ペアの特定の BIT を更新します

クエリ 2 の例は次のとおりです。

  • 行キー: クライアント A
  • 行の値: < (場所 1、ビットマスク 1)、(場所 2、ビットマスク 2)、(場所 3、ビットマスク 3) >
  • クエリ: キー = 'Client A' で行を更新し、Loc IN (Loc 1, Loc 3) のビット # 8 を設定します

最終的に、各行の値のペアを反復処理できる map-reduce クエリを実行したいと思います。

4

1 に答える 1

0

このようなものはどうですか?

{
    "_id" : ObjectId("51da846d9c34549b45432871"),
    "client_id" : "client_a",
    "values" : [
        {
            "location" : "loc_1",
            "bitmap" : [
                "000...",
                "111..."
            ]
        }
    ]
}

db.collection.find( { client_id: 'client_a', 'values.location': 'loc_1' } )
于 2013-07-08T07:35:54.410 に答える