Tôi đã hỏi đây là nhận xét về câu hỏi another và cũng đã đăng một question trên người dùng mongodb. Không có câu trả lời cho đến nay, vì vậy tôi đang sử dụng để đặt câu hỏi riêng.MongoDB truy vấn mảng lồng nhau
Các documentation trạng thái:
Nếu trường có chứa một mảng, thì $ trong khai thác chọn tài liệu mà lĩnh vực giữ một mảng có chứa ít nhất một yếu tố phù hợp với một giá trị trong mảng được chỉ định (ví dụ: vv)
tôi đang sử dụng:
mongod --version:
db version v2.2.2, pdfile version 4.5
Thu May 30 12:19:12 git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
mongo --version:
MongoDB shell version: 2.0.4
Trong MongoDB shell:
db.nested.insert({'level1': {'level2': [['item00', 'item01'], ['item10', 'item11']]}})
Dưới đây là một danh sách các truy vấn mà nên làm việc theo các tài liệu, và kết quả họ sản xuất:
Tại sao không làm việc này?
> db.nested.findOne({'level1.level2.0': 'item00'})
null
Tại sao tôi cần $ tất cả?
> db.nested.findOne({'level1.level2.0': {'$all': ['item00']}})
{
"_id" : ObjectId("51a7a4c0909dfd8872f52ed7"),
"level1" : {
"level2" : [
[
"item00",
"item01"
],
[
"item10",
"item11"
]
]
}
}
Ít nhất một trong những điều sau đây sẽ hiệu quả, phải không?
> db.nested.findOne({'level1.level2.0': {'$in': ['item00']}})
null
> db.nested.findOne({'level1.level2': {'$in': ['item00']}})
null
Bất kỳ ý tưởng nào? Chúng tôi đang xem xét việc bỏ MongoDB nếu cú pháp truy vấn không hoạt động như được quảng cáo.
Cảm ơn!
Đánh giá cao việc bạn dành thời gian trả lời, nhưng rất tiếc, không có câu trả lời nào của bạn là chính xác. Trong trang "Đọc" của hướng dẫn sử dụng, tìm kiếm "Thao tác sau trả về một con trỏ tới tất cả các tài liệu trong bộ sưu tập bios, trong đó các trường tham chiếu mảng chứa phần tử 'UNIX':" Trong liên kết tài liệu gần đầu câu hỏi của tôi, bạn có thể thấy rằng $ in nên hoạt động trên các trường có chứa mảng. Cuối cùng, câu lệnh của bạn "$ all đang hoạt động vì ..." là sai: không phải tất cả các giá trị trong trường cần tồn tại trong truy vấn, nhưng tất cả các giá trị trong truy vấn phải tồn tại trong trường của tài liệu. – dgorur
Cảm ơn bạn đã sửa "$ tất cả đang hoạt động vì ...". Vì vậy, bạn đang nói rằng $ trong nên làm việc cho mảng và tài liệu nói như vậy. Bây giờ tôi bị hấp dẫn. Tôi sẽ thực hiện một số thí nghiệm và xem liệu tôi có tìm ra không. Bạn có một câu hỏi rất thú vị ở đây! – AntonioOtero
Tôi đưa những phát hiện của mình vào một câu trả lời khác, tôi hy vọng nó hữu ích cho bạn. – AntonioOtero