2013-05-15 47 views
12

Tôi muốn tìm kiếm các giá trị có các ký tự đặc biệt như " $/. @ > " trong tài liệu.Tìm chuỗi có các ký tự đặc biệt trong tài liệu MongoDB

Cho phép xem xét, tôi đã MyKey với các giá trị như "test$australia", "test$austria", "test$belgium", "green.africa".

Tôi muốn các giá trị tìm kiếm với '.*$aus.*',

Ví dụ,

db.myCollection.find({ myKey : /.*$aus.*/i }); 

HOẶC

db.myCollection.find({ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }); 

Trên truy vấn không hoạt động, ho Tôi có nên tạo truy vấn không? Tôi đang sử dụng MongoDB 2.4.1.

Trả lời

12

Bạn phải thoát khỏi $ bởi \:

db.myCollection.find({ myKey : /.*\$aus.*/i }); 
// OR 
db.myCollection.find({myKey: { $regex: '.*\\$aus.*', $options: 'i'}}) 
+0

Bạn có thể vui lòng xóa toán tử qr không cần thiết trong bảng điều khiển .. Tôi cũng đã chỉnh sửa trong câu hỏi này. Nó đã hoạt động. – dex

+0

Ngoài ra làm thế nào tôi có thể đạt được cùng với tùy chọn REGEX. – dex

+1

Bạn phải tăng gấp đôi dấu gạch chéo ngược trong chuỗi regex trong truy vấn mongo json: 'db.myCollection.find ({myKey: {$ regex: '. * \\ $ aus. *', $ Options: 'i'}}) ' –

3
db.test.insert({word: 'hai('}); 
db.test.insert({word: 'jana'}); 

Output được như thế:

{ "_id" : ObjectId("56f27fb71d843581261433c6"), "word" : "hai(" } 
{ "_id" : ObjectId("56f27ffe1d843581261433c8"), "word" : "jana" } 

Lưu ý: Muốn hàng char đặc biệt mình rất

db.test.find({word:{$regex:"\\("}}); 

Đầu ra như sau:

{ "_id" : ObjectId("56f27fb71d843581261433c6"), "word" : "hai(" } 
Các vấn đề liên quan