Có cách nào để tìm kiếm một cột trong bộ sưu tập trong mongodb với $ trong đó bao gồm một mảng các phần tử cho tìm kiếm và cũng khớp với các đối tượng trong cột không?
Trả lời
Bạn có thể sử dụng $ elemMatch với tìm kiếm biểu thức chính quy, ví dụ: chúng ta hãy tìm kiếm cho "xanh" màu trong bộ sưu tập sau:
db.items.save({ name : 'a toy', colors : ['red', 'BLUE'] })
> ok
db.items.find({ 'colors' :
{ $elemMatch :
{ $regex : 'blue', $options : 'i' }
}
})
>[
{ "name" : "someitem", "_id" : { "$oid" : "4fbb7809cc93742e0d073aef" }, "colors" : [ "red", "BLUE" ] }
]
Một lưu ý: regex này sẽ không sử dụng chỉ mục. Vì vậy, giải pháp như vậy không phù hợp cho 'dữ liệu lớn'. Một giải pháp khác là hỗ trợ cùng một mảng thấp hơn. –
Thật vậy. Cảm ơn bạn đã đề cập đến điều đó. –
điều này không hữu ích khi chúng ta cần kiểm tra một mảng giá trị –
Đây là case insensitive tìm kiếm của tôi (query) với nhiều điều kiện (regex) từ dữ liệu của mảng, tôi đã sử dụng $in
nhưng nó không hỗ trợ tìm kiếm phân biệt chữ hoa chữ thường.
Ví dụ dữ liệu
{
name : "...Event A",
tags : ["tag1", "tag2", "tag3", "tag4]
},
{
name : "...Event B",
tags : ["tag3", "tag2"]
},
{
name : "...Event C",
tags : ["tag1", "tag4"]
},
{
name : "...Event D",
tags : ["tag2", "tag4"]
}
truy vấn của tôi
db.event.find(
{ $or: //use $and or $or depends on your needs
[
{ tags : {
$elemMatch : { $regex : '^tag1$', $options : 'i' }
}
},
{ tags : {
$elemMatch : { $regex : '^tag3$', $options : 'i' }
}
}
]
})
Sử dụng $in với trận đấu là trường hợp nhạy cảm:
dữ liệu Ví dụ:
{
name : "...Event A",
fieldX : "aAa"
},
{
name : "...Event B",
fieldX : "Bab"
},
{
name : "...Event C",
fieldX : "ccC"
},
{
name : "...Event D",
fieldX : "dDd"
}
Và chúng tôi muốn docu các tuyên bố là "fieldX" được chứa trong bất kỳ giá trị của mảng (optValues):
var optValues = ['aaa', 'bbb', 'ccc', 'ddd'];
var optRegexp = [];
optValues.forEach(function(opt){
optRegexp.push( new RegExp(opt, "i"));
});
db.collection.find({ fieldX: { $in: optRegexp } });
này làm việc cho $all một trong hai.
Tôi hy vọng điều này sẽ hữu ích!
p.s .: Đây là giải pháp của tôi để tìm kiếm theo thẻ trong ứng dụng web.
làm việc cho Ruby cũng như nhờ .. chỉ cần sử dụng 'Regexp.new (opt, Regexp :: IGNORECASE)' thay cho 'new RegExp (tag, "i") ' –
này làm việc cho tôi một cách hoàn hảo: Từ mã chúng tôi có thể tạo truy vấn tùy chỉnh như thế này:
{"first_name":{"$in":[{"$regex":"^serina$","$options":"i"},{"$regex":"^andreW$","$options":"i"}]}}
này sẽ làm thay đổi đến sau trong Mongo sau khi truy vấn:
db.mycollection.find({"first_name":{"$in":[/^serina$/i, /^andreW$/i]}})
Tương tự cho "$ nin ".
- 1. Tìm kiếm phân biệt chữ hoa chữ thường trong grails
- 2. JavaScript: tìm kiếm phân biệt chữ hoa chữ thường
- 3. Tìm kiếm không phân biệt chữ hoa chữ thường SOLR
- 4. Tìm kiếm danh sách phân biệt chữ hoa chữ thường
- 5. Không phân biệt chữ hoa chữ thường với Dynamic Linq
- 6. khớp với phân biệt chữ hoa chữ thường trong xpath?
- 7. Tìm kiếm thẻ không phân biệt chữ hoa chữ thường trong Vim
- 8. Tôi làm cách nào để tìm kiếm phân biệt chữ hoa chữ thường trong pgrep?
- 9. Tìm kiếm phân biệt chữ hoa chữ thường trong Python ElementTree
- 10. Có thể thực hiện tìm kiếm phân biệt chữ hoa chữ thường trong OpenGrok không?
- 11. URL không phân biệt chữ hoa chữ thường với mod_rewrite
- 12. Tìm kiếm từ điển không phân biệt chữ hoa chữ thường?
- 13. Toán tử HQL giống như trường hợp tìm kiếm phân biệt chữ hoa chữ thường
- 14. Khuôn khổ thực thể và tìm kiếm chuỗi không phân biệt chữ hoa chữ thường
- 15. Tìm kiếm/truy vấn không phân biệt chữ hoa chữ thường
- 16. Tìm kiếm phân biệt chữ hoa chữ thường và thay thế bằng sed
- 17. Mảng phân biệt chữ hoa chữ thường trong Lua
- 18. Không phân biệt chữ hoa chữ thường không hoạt động
- 19. không phân biệt chữ hoa chữ thường trong NSArray chứaObject:
- 20. Đối sánh phân biệt chữ hoa chữ thường trong Marpa
- 21. AngularJs, bộ lọc phân biệt chữ hoa chữ thường
- 22. Cột chuỗi phân biệt chữ hoa chữ thường trong SQLAlchemy?
- 23. Danh sách phân biệt chữ hoa chữ thường
- 24. Kết hợp mẫu Lua phân biệt chữ hoa chữ thường
- 25. GSON deserialize theo cách phân biệt chữ hoa chữ thường
- 26. Tên bảng có phân biệt chữ hoa chữ thường không?
- 27. DISTINCT MySQL phân biệt chữ hoa chữ thường
- 28. OData và phân biệt chữ hoa chữ thường
- 29. Hàm in_array không phân biệt chữ hoa chữ thường
- 30. Loại.Không phân biệt chữ hoa chữ thường - WinRT
Ngoài toán tử $ in, đây là bản sao của http://stackoverflow.com/questions/1863399/mongodb-is-it-possible-to-make-a-case-insensitive-query –
Ya đúng. câu hỏi của tôi về cơ bản liên quan đến trường hợp caseinsensitive với $ trong toán tử. –