0

私がやろうとしていることは次のとおりです。

複数のドキュメントに存在する可能性のあるオブジェクトがあり、これがベスト プラクティスかどうかはわかりませんが、それらの ObjectId をポインターとして使用しています。

書類A

{
"_id": {
    "$oid": "51a02dade4b02780aeee5ab7"
},
"title": "My Document A",
"artifacts": [
    "51a81d8ee4b084336fea2d33",
    "asdfsdfe4b084336fea2d33"
]

}

文書B

{
"_id": {
    "$oid": "51a02dade4b02780aeee5ab7"
},
"title": "My Document A",
"artifacts": [
    "51a81d8ee4b084336fea2d33",
    "123454b084336fea2d33"
]

}

個々のアーティファクトは次のようになります。このアーティファクトが変更された場合、それが存在するドキュメントを更新する必要はありません:

{
    "_id": {
        "$oid": "51a81d8ee4b084336fea2d33"
    },
    "title": "Artifact A",
    "media": {
        "player": "video",
        "source": "http://www.youtube.com/watch?v=12334456"
    }
}

私がやりたいことは、ドキュメント A またはドキュメント B のいずれかに示されているすべてのアーティファクトの拡張リストを、次のような配列で取得することです。

[{
        "_id": {
            "$oid": "51a81d8ee4b084336fea2d33"
        },
        "title": "Artifact A",
        "media": {
            "player": "video",
            "source": "http://www.youtube.com/watch?v=12334456"
        }
    },
{
        "_id": {
            "$oid": "123455e4b084336fea2d33"
        },
        "title": "Artifact B",
        "media": {
            "player": "video",
            "source": "http://www.youtube.com/watch?v=12334456"
        }
    }]

私が過去に行った方法は、クライアントからIDのリストをPOSTしてから使用することです

{_id: { $in: userQuestArray} } 

しかし、クライアントからノードに常にポストバックしている場合、少し効率が悪いようです。特に、私が投稿している配列が何百ものアイテムである場合。

4

1 に答える 1