2013-12-18 13 views
14

Có cách nào để truy vấn đối tượng không có cùng giá trị trên một số trường không? Ví dụ tôi có ghi:Nhận các giá trị hồ sơ riêng biệt

{ id : 1, name : "my_name", salary : 1200 } 
{ id : 2, name : "my_name", salary : 800 } 
{ id : 3, name : "john", salary : 500 } 

Query: tìm thấy tất cả với NOT_THE_SAME (tên)

Tôi chỉ muốn hồ sơ với id 1 và 3 bởi vì tôi xác định rằng tôi không muốn hồ sơ với cùng một giá trị trong lĩnh vực name hoặc 2 và 3, nó không quan trọng trong tình huống này.

Trả lời

12

Bạn có thể sử dụng db.collection.distinct để lấy lại một mảng các giá trị độc đáo:

> db.test.distinct("name") 
[ "my_name", "john" ] 
7

Bạn cũng có thể sử dụng một câu riêng biệt với bộ sưu tập được lọc. Ví dụ, bạn có thể nhận được giá trị khác biệt của tên từ tiền lương trên 800 với các truy vấn sau đây:

db.test.distinct("name", { "salary": { $gt: 800 } }) 
1
db.runCommand ({ 
    distinct: "CollectionName", 
    key: "key", 
    query: { "createdDate": { 
     $gte:new ISODate("2017-04-04T23:59:59Z"), 
     $lte:new ISODate("2017-04-25T23:59:59Z")}} }) 

truy vấn này giúp tìm kiếm dữ liệu trong bộ sưu tập, sẽ lấy giá trị của trọng từ tất cả các tài liệu mà đáp ứng điều kiện của việc giữa ngày

+0

Mặc dù đoạn mã này có thể giải quyết được câu hỏi, [bao gồm giải thích] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Ngoài ra, vui lòng không cố gắng gắn mã của bạn với các nhận xét giải thích, điều này làm giảm khả năng đọc của cả mã và giải thích! – Carpetsmoker

+0

@Carpetsmoker - đã thêm nhận xét, hy vọng điều này sẽ hữu ích – GSK

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