それぞれが配列を保持している場合、mongodb が 2 つのフィールドにインデックスを作成できないという主な問題:
{a:[1,2], b: [8,9]}
そのため、次の問題を解決するのに苦労しています。
コレクションの説明
コレクション名:アイテム
- 各アイテムは、多数 (数千) のフォルダーに属することができます
- 各項目は、多数 (数千人) のユーザーに読まれる可能性があります。
集電構造(簡略化)
folderDataArr: [{
_id: 1,
dateOfAddingIntoFolder: 01.01.11
}, {
_id: 2,
dateOfAddingIntoFolder: 01.01.12
}],
userDataArr: [{
_id: 100,
isRead: true,
dateOfRead: 01.0.10
}, {
_id: 101,
isRead: true,
dateOfRead: 01.02.31
}]
ビルドするクエリ
効率的なクエリを作成するには、構造を再フォーマットする必要があります。
- 一部のフォルダーに属し、特定のユーザーによって読み取られなかった最後の N 個のアイテムを返します。AND 結果は、そのニュースがフォルダーに追加された日付 (つまり、"dateOfAddingIntoFolder" フィールド) で並べ替える必要があります。
質問は
この問題を解決するにはどうすればよいですか?
助けてくれてありがとう。