MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongo में एक पाइपलाइन में कुछ संग्रह कैसे शामिल करें और क्रमबद्ध करें?

नवीनतम Mongo 3.4 संस्करण, आप उपयोग करेंगे $ पहलू एकाधिक एकत्रीकरण पाइपलाइन में एक ही डेटा को संसाधित करने के लिए और परिणाम को सभी एकत्रीकरण से एकल आउटपुट में शामिल करता है।

db.users.aggregate([
    { "$match": { "_id":1} },
    {
        "$facet": {
            "Received": [
                 {$lookup: {from: 'requests', localField: "_id", foreignField: "userId", as: "receivedRequest"}},
                 {$unwind: '$receivedRequest'},
                 {$lookup: {from: 'users', localField: "receivedRequest.requesterId", foreignField: "_id", as: "receivedUser"}},
                 {$project: {_id: '$receivedRequest.requesterId', profile: '$receivedUser.profile', weight: {$add: [4]}}}
            ],
            "Sent": [
                 {$lookup: {from: 'requests', localField: "_id", foreignField: "requesterId", as: "sentRequest"}},
                 {$unwind: '$sentRequest'},
                 {$lookup: {from: 'users', localField: "sentRequest.userId", foreignField: "_id", as: "sendUser"}},
                 {$project: {_id: '$sentRequest.userId', profile: '$sendUser.profile', weight: {$add: [3]}}}
            ],
            "Friends": [
                 {$lookup: {from: 'friends', localField: "_id", foreignField: "userId", as: "friends"}},
                 {$unwind: '$friends'},
                 {$lookup: {from: 'users', localField: "friends.friendId", foreignField: "_id", as: "friendUser"}},
                 {$project: {_id: '$friends.friendId', profile: '$friendUser.profile', weight: {$add: [2]}}}
            ],
            "Others": [
                {$lookup: {from: 'friends', localField: "_id", foreignField: "friendId", as: "others"}},
                 {$unwind: '$others'},
                 {$lookup: {from: 'users', localField: "others.userId", foreignField: "_id", as: "other"}},
                 {$project: {_id: '$others.userId', profile: '$other.profile', weight: {$add: [1]}}}
            ]
        }
    }
]).pretty()

नमूना आउटपुट:

{
        "Received" : [
                {
                        "_id" : 3,
                        "profile" : [
                                {
                                        "name" : "John"
                                }
                        ],
                        "weight" : 4
                }
        ],
        "Sent" : [
                {
                        "_id" : 4,
                        "profile" : [
                                {
                                        "name" : "Jessica"
                                }
                        ],
                        "weight" : 3
                }
        ],
        "Friends" : [
                {
                        "_id" : 2,
                        "profile" : [
                                {
                                        "name" : "Ana"
                                }
                        ],
                        "weight" : 2
                }
        ],
        "Others" : [
                {
                        "_id" : 5,
                        "profile" : [
                                {
                                        "name" : "Sheldon"
                                }
                        ],
                        "weight" : 1
                }
        ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - बिना किसी अनुक्रमणिका त्रुटि के सॉर्ट () के लिए बहुत अधिक डेटा

  2. नेवला में नेस्टेड सरणियाँ

  3. स्क्रैपी स्पाइडर में पाइपलाइन ऑब्जेक्ट कैसे प्राप्त करें

  4. एक सरणी स्रोत का उपयोग करके मोंगोडब में सरणी सबसेट प्राप्त करें

  5. वसंत डेटा के साथ MongoRepository के साथ क्वेरी एनोटेशन का उपयोग करते समय क्वेरी कैसे दिखाएं?