0

Mongo DB シェル (JS ファイルを使用して実行):

「検索」コマンドを実行した後、結果に重複する行がいくつあるかを調べる必要があります。コレクションにはさまざまな JSON を含めることができるため、比較のために各 JSON オブジェクトを解析する必要があります。

要するに、bson オブジェクトからキーを列挙するにはどうすればよいですか?

たとえば、次の 4 つの JSON エントリを見ると:

// 1
{
    "_id" : ObjectId("1"),
    "Date" : "2012-06-17",
    "k1" : "v1",
    "k2" : "v2",
    "k3" : "v3",
    "k4" : "v4",
}
// 2
{
    "_id" : ObjectId("2"),
    "Date" : "2012-06-17",
    "key1" : "v1",
    "key2" : "v2",
}
// 3
{
    "_id" : ObjectId("3"),
    "Date" : "2012-06-18",
    "k1" : "v1",
    "k2" : "v2",
    "k3" : "v3",
    "k4" : "v4",
}
// 4
{
    "_id" : ObjectId("4"),
    "Date" : "2012-06-18",
    "rk1" : "v1",
    "rk2" : "v2",
    "bk3" : "v3",
    "bk4" : "v4",
    "ck5" : "v5",
    "ck6" : "v6",
}

比較中に「_id」と「Date」キーを無視したい。「_id」はmongo固有であるため無視し、「Date」は私の要件であるため無視します。

そして、キー自体は非常に多様です。JSON ドキュメントごとにキー名が異なり、キーと値のペアの数も異なります。

上記の場合、「1」と「3」を同一(重複)として認識させたい。

どうすればいいですか?

bson オブジェクトからキーを列挙するにはどうすればよいですか?

4

1 に答える 1

1

もしかstringifyしたら重宝するかもしれません。data11 と 3 がandと呼ばれているとしましょうdata3。ID と日付の両方をリセットすると、それらを比較できるようになります。

data1._id = null;
data3._id = null;
data1.Date = null;
data3.Date = null;
var eq = JSON.stringify(data1)  === JSON.stringify(data3); //=> true

friendlyEqual私が間違っていなければ、同じことを行うシェルで呼び出されるメソッドがいくつかあります。その場合、次のようなものを使用できるはずです。var eq = friendlyEqual(data1,data3);

于 2012-06-19T05:33:55.703 に答える