0

現在、私は多数のメンバーを含む一連のリストを管理しています。フィールドとこれらのフィールドの名前に関しては、すべてのリストが異なって見える場合があります。

通常、基本的なリスト メンバーは次のようになります (メンバー コレクションから)。

{
    "_id" : ObjectId("52284ae408edcb146200009f"),
    "list_id" : 1,
    "status" : "active",
    "imported" : 1,
    "fields" : {
        "firstname" : "John",
        "lastname" : "Doe",
        "email" : "john@example.com",
        "birthdate" : ISODate("1977-09-03T23:08:20.000Z"),
        "favorite_color" : "Green",
        "interests" : [ 
            {
                "id" : 8,
                "value" : "Books"
            }, 
            {
                "id" : 10,
                "value" : "Travel"
            }, 
            {
                "id" : 12,
                "value" : "Cooking"
            }, 
            {
                "id" : 15,
                "value" : "Wellnes"
            }
        ]
    },
    "created_at" : ISODate("2012-05-06T15:12:26.000Z"),
    "updated_at" : ISODate("2012-05-06T15:12:26.000Z")
}

「fields」インデックスの下にあるすべてのフィールドは、現在のリスト ID に固有のフィールドです。これらのフィールドは、リスト ID ごとに変更できます。つまり、新しいリストは次のようになります。

{
    "_id" : ObjectId("52284ae408edcb146200009f"),
    "list_id" : 2,
    "status" : "active",
    "imported" : 1,
    "fields" : {
        "fullname" : "John Doe",
        "email" : "john@example.com",
        "cell" : 123456787984
    },
    "created_at" : ISODate("2012-05-06T15:12:26.000Z"),
    "updated_at" : ISODate("2012-05-06T15:12:26.000Z")
}

現在、私のアプリケーションでは、カスタム フィールドごとにユーザーが動的に検索できるようになっていますが、インデックスがないため、このプロセスは非常に遅くなる可能性があります。

リストの作成者がインデックスを作成するフィールドを選択できるようにするオプションだとは思いませんが、これをスピードアップする必要があります。

これに対する解決策はありますか?

4

1 に答える 1

0

フィールドの配列を持つようにドキュメントをリファクタリングすると、インデックスを利用できます。

fields: [
    { name: 'fullName', value: 'John Doe' },
    { name: 'email', value: 'john@example.com' },
    ...
]

fields.name と fields.value にインデックスを作成します。

もちろん、これは興味リストのような「より深い」値の解決策ではありません。

于 2013-11-14T22:20:16.193 に答える