私は自分のウェブサイトの通知システムをやっています。のような通知システムfacebook
。またはstackoverflow
。2つの問題があります。
どのように db に保存しますか? ユーザードキュメントにすべての通知を保存できますか? または別のドキュメントに(monogdbはドキュメントのサイズに制限されていると思うので?)または、インテリジェントに保存しますか?(inc、または db の値 (true/false を参照) を使用して、洗練されたクエリを使用)
ページに持ち込むにはどうすればよいですか?たとえば、
inbox
forのリンクをクリックstackoverflow
すると、そのページにリダイレクトされます。しかし、私には、たとえばシステムがありmultipage
ます。100人の友達がいます。1ページに30個掲載されています。そのため、通知をクリックすると、適切なページを知ることができないため、リダイレクトできません (ユーザーを削除できます)。
どうもありがとうございました !また、別のアイデアがあれば教えてください。ありがとう。
編集:
(私の英語でごめんなさい、私はフランス語です)
最初の問題については、自分の構造を選択する時が来るのを待たなければならないことに気付きました。私の通知は..少し複雑なので、感じに進んでください。
2番目に、私は問題を解決しました。私は次のように説明します: (分かりやすいので友人を例に挙げます。) 私は自分のデータを次のように保存しました:
{
friends: [
{_id: xxxxx, ts: xxxx},
{_id: xxxxx, ts: xxxx}
]
}
すべての友達を表示するとします。1 ページあたり 30 人です。問題は次のとおりです。
- すべての友達を表示したいとき、mongo を使用して並べ替えることができません。(ちょっと問題)
- ユーザーをこのリスト (1 ページあたり 30) に導きたい場合は、特別な友達で、常に by を維持
sort
しts
ます。ページがわかりません。ユニークな解決策は、すべてのドキュメントを取得することです。しかし、パフォーマンスが非常に悪いです。
だから、私はこのように保存します:
{
friends: {
xxxx: {ts:xxx},
xxxx: {ts:xxx}
}
}
スキップと制限を使用して、ドキュメントを並べ替えることができることを知っています。したがって、一部が必要な場合は、すべてのドキュメントを取得する必要はありません。
ページを知るには、ts に < または > の数を入力するだけです。たとえば、必要な友達の ts に > である 11 人の友達がいて、すべての友達の数を数えます (例: 50 人の友達)。 50 と 11 で、ページを推測できます。
この解決策は良いですか?- カウントが必要です - > または < の数を知るためのクエリで、友人がリストされているページを取得できます。the sort ts
カウントを使用する理由がわかりません。同じドキュメントに保存されていないため、必要です。
2編集:
このソリューションの問題は、query object
(例: for doupdate object
mongo query
friends.xxxxxx: {$exists:true}
ps: mongodbts
の代わりに使用する利点は何ですか? date
私は使用していますが、ts
保管すると思いますがdate
、いいえts
。
3 編集
のようにしSammaye
ます。別の文書に保管してください。見てみましょう: http://mongly.com/Multiple-Collections-Versus-Embedded-Documents/#1とhttp://openmymind.net/2012/1/30/MongoDB-Embedded-Documents-vs-Multiple-コレクション/