MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

truy vấn sao băng cho tất cả các tài liệu có trường duy nhất

Có một thiết lập chung mà bạn có thể sử dụng để truy cập đối tượng thu thập trình điều khiển cơ bản và do đó .aggregate() mà không cần cài đặt bất kỳ plugin nào khác.

Quá trình cơ bản diễn ra như sau:

FooAges = new Meteor.Collection("fooAges");

Meteor.publish("fooAgeQuery", function(args) {
    var sub = this;

    var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;

    var pipeline = [
        { "$group": {
            "_id": "$age", 
            "name": { "$max": "$name" }
        }}
    ];

    db.collection("foo").aggregate(        
        pipeline,
        // Need to wrap the callback so it gets called in a Fiber.
        Meteor.bindEnvironment(
            function(err, result) {
                // Add each of the results to the subscription.
                _.each(result, function(e) {
                    // Generate a random disposable id for aggregated documents
                    sub.added("fooAges", Random.id(), {
                        "age": e._id,
                        "name": e.name
                    });
                });
                sub.ready();
            },
            function(error) {
                Meteor._debug( "Error doing aggregation: " + error);
            }
        )
    );

});

Vì vậy, bạn xác định một tập hợp cho đầu ra của tập hợp và trong một quy trình như thế này, sau đó bạn xuất bản dịch vụ mà bạn cũng sẽ đăng ký trong ứng dụng khách của mình.

Bên trong này, tập hợp được chạy và đưa vào tập hợp khác (về mặt logic vì nó không thực sự viết bất cứ điều gì). Vì vậy, sau đó bạn sử dụng bộ sưu tập đó trên máy khách với cùng một định nghĩa và tất cả các kết quả tổng hợp chỉ được trả về.

Tôi thực sự có một ứng dụng ví dụ hoạt động đầy đủ của một quy trình tương tự trong câu hỏi này , cũng như việc sử dụng tổng hợp các vụ tấn công sao băng gói trên câu hỏi này ở đây, nếu bạn cần tham khảo thêm.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chọn cơ sở dữ liệu nào (Cassandra, MongoDB,?) Để lưu trữ và truy vấn dữ liệu sự kiện / nhật ký / số liệu?

  2. Làm cách nào để truy vấn một tập hợp các đối tượng với một mảng giá trị trong mongoose?

  3. Làm thế nào để thực hiện một truy vấn mongo tổng hợp bằng cách sử dụng json trong một chuỗi?

  4. Chọn dữ liệu trong đó phạm vi giữa hai trường khác nhau chứa một số nhất định

  5. Truy vấn $ near thông qua Java