Tôi đã nhập một số loại dữ liệu XML cẩu thả vào cơ sở dữ liệu Mongo. Mỗi Tài liệu có các tài liệu phụ lồng nhau đến độ sâu khoảng 5-10. Tôi muốn tìm() tài liệu có giá trị cụ thể của một trường cụ thể, trong đó trường có thể xuất hiện ở bất kỳ độ sâu nào trong các tài liệu phụ (và có thể xuất hiện nhiều lần).Cách tìm tên trường MongoDB ở độ sâu tùy ý
Tôi hiện đang kéo từng tài liệu vào Python và sau đó tìm kiếm từ điển đó, nhưng sẽ tốt hơn nếu tôi có thể nêu mẫu thử nghiệm nơi cơ sở dữ liệu chỉ trả về tài liệu có giá trị cụ thể của tên trường ở đâu đó trong nội dung của chúng .
Dưới đây là một tài liệu ví dụ:
{
"foo": 1,
"bar": 2,
"find-this": "Yes!",
"stuff": {
"baz": 3,
"gobble": [
"wibble",
"wobble",
{
"all-fall-down": 4,
"find-this": "please find me"
}
],
"plugh": {
"plove": {
"find-this": "Here too!"
}
}
}
}
Vì vậy, tôi muốn tìm các tài liệu có một "tìm-này" lĩnh vực, và (nếu có thể) để có thể tìm các tài liệu có một giá trị cụ thể của trường "tìm này".
Thánh server-side scripting, Batman! Tôi không biết bạn có thể chạy JS trong cơ sở dữ liệu! Đó là thực sự mát mẻ, và giải pháp của bạn làm cho cảm giác hoàn hảo. Cảm ơn rất nhiều! –
Ồ, bạn biết không?Tôi đặt cược bạn có thể thực hiện tìm kiếm() với mệnh đề "hoặc" $ where: để cơ sở dữ liệu tìm "khóa-tìm-kiếm" và "giá trị để tìm kiếm" bằng cách sử dụng cơ chế (nhanh) của chính nó cho nơi khóa cấp cao nhất, và cung cấp chức năng JS đệ quy tìm kiếm được sử dụng trên tất cả các nút mà "key-to-search" không ở cấp cao nhất. Tôi sẽ thêm nó vào câu hỏi này nếu tôi có thể làm cho nó hoạt động. –