MongoDBを使ってMongooseを使ってネストされたプロパティの値に基づいてドキュメントを検索しようとしています。Mongooseの入れ子になったプロパティの照会(ドット表記なし)
var Obj = new mongoose.Schema({
mainProperty: {
nestedProp1: String
nestedProp2:String
}
})
データが受信されるため、ドット表記なしでクエリを実行する必要があります(下記参照)。
Obj.find({'mainProperty.nestedProp': 'value'})
上記のコードは正しい結果を得られますが、以下の形式でクエリ条件を渡す必要があります。
サーバー上でクエリを開発するのではなく、クライアント側から引数としてクエリオブジェクト全体を渡しています。サーバに当たる頃には、上記のコードが以下のように表示されます。
Obj.find(queryCondition)
//queryCondition holds a value of { mainProperty: { nestedProp1: 'value' } }
mainPropertyには2つのプロパティがネストされているため、上記の検索は実行できません。コロンに続いて渡されるものと正確に等しいmainPropertyを持つドキュメントを検索します(nestedProp1と等しい値を持ち、nestedProp2を持たないドキュメントを意味します)。
mainPropertyの値ではなくnestedProp1の値を照会する別の方法(ドット表記やオブジェクト自体を編集しない)を呼び出す方法はありますか?
ありがとう!これは小規模な例では間違いなく巧妙な方法ですが、実際のアプリケーションでは、8つのネストされていないプロパティと5つのネストされたプロパティがあります。さらに、毎回クエリに渡されるプロパティは異なります。私は大きなifステートメントを使用して、何が使用されているかを判断し、プロパティを変換することを避けることを望んでいます。私は質問をしたときに私はもっと多くの物件を持っていると指定しておき、助けに感謝します! –