2011-01-16 24 views
9

Tôi có struct này trong bộ sưu tập của tôi:tìm thấy bên trong một MongoDB băm

{foo : 1, bar : 4, baz : {a : 1, b : 2 ,c : "fafofu"}} 

Làm thế nào để tìm thấy "a" và "b" bên trong baz? Nó không hoạt động db.my_collection.find({baz : {a : 1, b : 2});

Tôi không quan tâm nếu "c" là "fafofu" hoặc "cacocu" không quan trọng.

Trả lời

19

Bạn có thể sử dụng . để tiếp cận đối tượng baz.

db.my_collection.find({"baz.a" : 1, "baz.b" : 2}); 
+0

Cảm ơn bạn rất nhiều. – Mantovani

+2

@Mantovani: nếu câu trả lời này giải quyết được vấn đề của bạn, thì bạn nên chấp nhận nó bằng cách nhấp vào biểu tượng "đánh dấu" bên cạnh nó. – thkala

0

Có lẽ nếu bạn thử cách sau

{foo : 1, bar : 4, a: ["1"], b: ["2"], "c": ["fafofu"]} 

Bạn có thể sử dụng find/findOne:

print(db.???.findOne({ c: "fafofu" }).foo); 

http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo

Đáng tiếc là tôi không có khả năng để kiểm tra điều này.

print(db.???.baz.findOne({ c: "fafofu" }).foo); 

Vấn đề của tôi là tìm dữ liệu, vì bạn không biết khó tối ưu hóa hiệu suất tìm kiếm của mình ở đâu. Bạn có đồng ý không?

+8

Tôi hiểu rằng hầu hết mọi người trên thế giới đều không phải là người nói tiếng Anh bản địa (tôi cũng không phải là một), nhưng, có hay không, tiếng Anh _is_ lingua franca của ngành CNTT. Bạn nên xem xét dịch câu trả lời của bạn sang tiếng Anh để phần còn lại của chúng tôi có thể đọc nó và bình luận về nó. – thkala

+2

Tất cả các câu trả lời phải được cung cấp bằng tiếng Anh tại đây. May mắn thay tôi đã nói tiếng Bồ Đào Nha của Brazil trong khoảng một thập kỷ vì vậy tôi đã có thể dịch điều này cho bạn. Tôi xin lỗi nếu tôi không mang ý nghĩa của bạn chính xác. – Sampson

+2

@ Jonathan Sampson: Cảm ơn bạn đã dành thời gian để dịch này – thkala

Các vấn đề liên quan