次のコレクションを考えてみましょう。親ドキュメントの値はであり、フィールドには同じフィールドのamount
と同じ値が埋め込まれています。mongoDBを使用して埋め込みドキュメントを親フィールドと比較
{
"_id" : ObjectId("5975ce5f05563b6303924914"),
"amount" : 100000,
"offers" : [
{
"amount": 100000
}
]
}
親と同じ量の少なくとも1つの埋め込み文書offer
を持っているすべてのオブジェクトを一致させる方法はありますか?
Iの例のクエリの場合、この、それだけで正常に動作します:
find({ offers: { $elemMatch: { loan_amount: 100000 } } })
しかし、私は、私が組み立てしようとしている実際のクエリで実際の値
100000
を知らない、私が使用する必要があります親伝票額項目の変数。このようなもの。
find({ offers: { $elemMatch: { loan_amount: "parent.loan_amount" } } })
ありがとうございます。私は$eq
または$elemMatch
でこれを行い、集約を避けることを望んでいましたが、おそらくそれは不可能です。
ありがとうございます!
オファーの文書に他の文書を参照して独自のコレクションがあると、それほど簡単ではないでしょうか。この集約はたくさんの仕事のように思えますが、私はパフォーマンスを重視しています。オファー文書を自分のコレクションに入れて他の文書のIDを参照する方が良いでしょうか? –
@StefanKonno別のコレクションに物を入れることはパフォーマンスが賢明です**悪い**です。費用はかかりますし、大変です。このため、最初にMongoDBを使用する必要があります。あるフィールドを他のフィールドと比較する「簡単な」方法はありません。どの方法にもコストがあり、これはリレーショナルデータベースにも当てはまります。 –
もう一度おねがいします。試してみます。私はあなたの努力に感謝し、良い一日を! –