0

2 つの MongoDB コレクションがあります。questions:

{
    "_id" : "8735574",
    "title" : "...",
    "owner" : {
        "user_id" : 950690
    },
}
{
    "_id" : "8736808",
    "title" : "...",
    "owner" : {
        "user_id" : 657258
    },
}

users:

{
    "_id" : 950690,
    "updated" : SomeDate,
    ...
}
{
    "_id" : 657258,
    "updated" : SomeDate,
    ...
}

のエントリは、usersに基づいて定期的に作成または更新する必要がありquestionsます。したがって、エントリがまったくないか、またはエントリが1 日以上前のものであるすべてのuser_idsを取得したいと思います。questionsusersusersupdated

これを実現するには、すべてuser_idの を読み取りquestions、結果から更新する必要のないすべてのユーザーを手動で削除します。しかし、これは多くの不要なデータを読み取るため、悪い解決策のようです。これを別の方法で解決する方法はありますか?ある種のコレクション結合は素晴らしいことですが、これが (実際には) MongoDB に存在しないことはわかっています。助言がありますか?

PS: これらのコレクションを単一のコレクションにネストusersすることは、他の場所からも参照する必要があるため、解決策にはなりません。

4

1 に答える 1

2

残念ながら、これを行う良い方法はありません。インデックスにアクセスして、すべてのデータを読み取って手動で操作せずにクライアント側でこのクライアント側を実行できないため、それが唯一の方法です。

ユーザーから質問への結合は、ユーザー コレクションにクエリを実行し$inてから質問コレクションに対して実行することで実行できますが、それが実際に実行できる唯一の最適化です。

于 2013-09-18T11:52:02.587 に答える