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

Tổng hợp Mongodb với 2 bộ sưu tập

Tùy thuộc vào nhu cầu của hệ thống của bạn, tôi nghĩ rằng thiết kế mô hình có thể được đơn giản hóa bằng cách chỉ tạo một bộ sưu tập hợp nhất tất cả các thuộc tính trong collection1collection2 . Ví dụ:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var accountSchema = new Schema({
    moneyPaid:{
        type: Number
    },
    isBook: {
       type: Boolean,
    }
}, {collection: 'account'});

var Account = mongoose.model('Account', accountSchema);

trong đó bạn có thể chạy đường dẫn tổng hợp

var pipeline = [
    { 
        "$match": { "isBook" : true }
    },
    { 
        "$group": {
            "_id": null,
            "total": { "$sum": "$moneyPaid"}
        }
    }
];

Account.aggregate(pipeline, function(err, results) {
    if (err) throw err;
    console.log(JSON.stringify(results, undefined, 4));
});

Tuy nhiên, với thiết kế giản đồ hiện tại, trước tiên bạn sẽ phải lấy id cho collection1 có giá trị true isBook trong collection2 và sau đó sử dụng danh sách id đó làm $match truy vấn trong collection1 tổng hợp mô hình, giống như sau:

collection2Model.find({"isBook": true}).lean().exec(function (err, objs){
    var ids = objs.map(function (o) { return o.coll_id; }),
        pipeline = [
            { 
                "$match": { "_id" : { "$in": ids } }
            },
            { 
                "$group": {
                    "_id": null,
                    "total": { "$sum": "$moneyPaid"}
                }
            }
        ];

    collection1Model.aggregate(pipeline, function(err, results) {
        if (err) throw err;
        console.log(JSON.stringify(results, undefined, 4));
    });
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách viết một ứng dụng python hỗ trợ nhiều cơ sở dữ liệu

  2. nodejs hiển thị hình ảnh được lưu trữ trong gridFS sang html

  3. Lỗi Mongod:98 Không thể khóa tệp:/data/db/mongod.lock Tài nguyên tạm thời không khả dụng. Một phiên bản mongod đã chạy chưa?

  4. MongoDB $ dayOfWeek

  5. Hiểu chỉ mục MongoDB