1 回答

TA貢獻1848條經驗 獲得超10個贊
$regex很可能只適用于字符串。如果你看一下 https://docs.mongodb.com/manual/reference/operator/query/regex/ 單詞“字符串”是斜體的:
為查詢中的模式匹配字符串提供正則表達式功能。
所以:
irb(main):034:0> a['foo'].find.first
=> {"_id"=>BSON::ObjectId('6068e59d4896683bab61ddbe'), "test"=>1}
irb(main):035:0> a['foo'].find(_id: /606/).first
=> nil
可以使用 https://docs.mongodb.com/manual/reference/operator/aggregation/convert/(和聚合管道)將值轉換為字符串類型:
irb(main):037:0> a['foo'].aggregate([{'$set'=>{_id:{'$convert'=>{input:'$_id',to:'string'}}}},{'$match':{_id:/606/}}
]).to_a
=> [{"_id"=>"6068e59d4896683bab61ddbe", "test"=>1}]
請注意,此類型將_id轉換為字符串,如果在其原始 ObjectId 類型中需要它,則需要將其$convert。
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報