正規表現は、文字列以外のものでは機能しません。実際には、 BSON Date
を選択する簡単な方法はありません。 純粋に、通常のクエリ式の時間値です。
これを行うには、 $whereを指定します。コード>
時間だけに一致する追加のロジックを使用した条件 日付値の一部。
質問で実際に提供されたデータに基づく:
db.getCollection('collection').remove({
"Id": "1585534",
"Type": NumberInt(42),
"$where": function() {
return this.InDate.getUTCHours() === 18
&& this.InDate.getUTCMinutes() === 30
}
})
これはもちろん、実際には "Id"
で識別されているだけですが、提供されたデータの最初のドキュメントにすぎません。 とにかく、その値は2つの間で一意であるためです。
.getUTCHours()
および .getUTCMinutes()
JavaScript 日付
です。
オブジェクトメソッド。これは、 BSON Date
$ where
内で使用すると表現されます
式。
自明なことに、MongoDB 3.6(執筆時点で近日公開)では、よりも効率的なフォームが可能です。 $ where
集計式の場合:
db.getCollection('collection').aggregate([
{ "$match": {
"Id": "1585534",
"Type": NumberInt(42),
"$expr": {
"$and": [
{ "$eq": [{ "$hour": "$InDate" }, 18 ] },
{ "$eq": [{ "$minute": "$InDate" }, 30] }
]
}
}}
])
ただし、このような式は、などのメソッドで直接使用することはできません。 .remove()
または .deleteMany()
、ただし $ where
式はできます。