MongoDB Compass Community 1.16.3aggregation
を構築しようとしていますが、ステージのクエリと同時に奇妙な問題が発生しています。$match
ObjectId
ISODate
非稼働中の$matchステージ
{
user_id: ObjectId("5c9168ec5530c90d0c5cd98a"),
value: {$gte: 600},
datetime: { $gte: ISODate("2019-02-01T00:00:00Z"), $lt: ISODate("2019-04-10T23:59:59Z") }
}
このクエリはまったく機能せず、コンパスが返されますExpected end of input but "}" found.
しかし、これらの$matchステージは機能します
{
user_id: ObjectId("5c9168ec5530c90d0c5cd98a"),
value: {$gte: 600}
}
パーフェクトな結果!
{
value: {$gte: 600},
datetime: { $gte: ISODate("2019-02-01T00:00:00Z"), $lt: ISODate("2019-04-10T23:59:59Z") }
}
パーフェクトな結果!
ObjectId
andISODate
を同時に使うとクエリが動かないようです。それで、私はどこかで間違いを犯しましたか?それとも2$match
段階に分ける必要がありますか?何かご意見は?
編集済み
$match
パイプラインを 2段階に分割すると(この例では削除value
しました) 、うまく機能しますが、それが適切な方法であり、効率的であるかどうかはわかりません。
[{
$match: {
user_id: ObjectId("5c9168ec5530c90d0c5cd98a")
}
}, {
$match: {
datetime: {
$gte: ISODate("2019-02-01T00:00:00Z"),
$lt: ISODate("2019-04-01T00:00:00Z")
}
}
}]