MongoDB に保存している一部のデータで少し問題が発生しました (注: ODM として mongoose を使用しています)。私は2つのスキーマを持っています:
mongoose.model('Buyer',{
credit: Number,
})
と
mongoose.model('Item',{
bid: Number,
location: { type: [Number], index: '2d' }
})
バイヤー/アイテムには、1 対多の関係を持つ親子関係があります。Item を Buyer ドキュメントにサブドキュメントとして埋め込むように設定したり、オブジェクト ID を相互に参照する 2 つの別個のドキュメントを作成したりできることを知っています。
私が直面している問題は、入札額がバイヤーのクレジットよりも低いだけでなく、場所が特定の地理座標に近いアイテムをクエリする必要があることです。
最初の基準を満たすには、Items をサブドキュメントとして埋め込んで、2 つの数値を比較できるようにする必要があるようです。しかし、位置を geoNear クエリで比較するには、ドキュメントを分離したほうがよいようです。そうしないと、各サブドキュメントで geoNear を実行できません。
このデータに対して両方のタスクを実行できる方法はありますか? その場合、どのようにデータを構造化すればよいですか? そうでない場合、1 つのクエリを実行してから、最初のクエリの結果に対して 2 番目のクエリを実行する方法はありますか?
ご協力いただきありがとうございます!