正規表現溶液について、以下で十分で
var search = "05",
rgx = new RegExp("^"+search); // equivalent to var rgx = /^05/;
db.collection.find({ "leave_start": rgx });
テスト
var leave_start = "05/06/2016",
test = leave_start.match(/^05/);
console.log(test); // ["05", index: 0, input: "05/06/2016"]
console.log(test[0]); // "05"
又は
var search = "05",
rgx = new RegExp("^"+search),
leave_start = "05/12/2016";
var test = leave_start.match(rgx);
console.log(test); // ["05", index: 0, input: "05/06/2016"]
console.log(test[0]); // "05"
別の代替の集約フレームワークを使用して、フィールドの最初の2つの文字を抽出し、次いで$match
オペレータは、上記新たなサブフィールドに基づいてドキュメントをフィルタリングします$substr
オペレータを利用することである。
db.collection.aggregate([
{
"$project": {
"leaves_start": 1,
"monthSubstring": { "$substr": : [ "$leaves_start", 0, 2 ] }
}
},
{ "$match": { "monthSubstring": "05" } }
])
これまでに何を試みましたか? –
私はこの '/^[05] {2} /'を追加しようとしました。最初の2つの文字列のすべてのデータが '05'で取得されます。しかし、それは動作しないようです。私が何か間違っているかどうかは分かりません。コードは次のとおりです:{leaves_start:{$ regex: '/^[05] {2} /'}} – user3545006
この場合はどうなりますか? '{leaves_start:{$ regex: '/^05 /'}}'これは、leaves_startフィールドが '05'で始まることを意味します。 –