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

तीन संग्रह के साथ मोंगोडब में शामिल हों?

ठीक है, ऐसा लगता है कि आपको बहुत सारी समस्याएं हैं। मैं उन्हें संक्षेप में बताने की कोशिश करूंगा।

समस्या 1 :आपके द्वारा प्रदान किया गया कुल कोड संकलित नहीं होता है।

db.user_movies.aggregate(
{$match : {mobile_no : mobile_no}},
{$unwind: "$movies" },
{$lookup: {from: "movies",localField: "movies",foreignField: "movie_id",as: "bmarks"}},
{$unwind : "$bmarks"},
{$match : {"bmarks.active": 1}},
{$group : { _id : "$_id", movies : {$push : "$bmarks"}, movie_ids: {$push : "$bmarks.movie_id"}}},
{$lookup: {from: "movie_comments", localField: "",foreignField: "movie_id",as: "comments"}},
{$unwind : "$comments"},
{$sort: {time_posted: -1}},
{$group: {_id: '$_id', comments : {$push : "$comments"}}},

ठीक करें:

db.user_movies.aggregate([
{$match : {mobile_no : mobile_no}},
{$unwind: "$movies" },
{$lookup: {from: "movies",localField: "movies",foreignField: "movie_id",as: "bmarks"}},
{$unwind : "$bmarks"},
{$match : {"bmarks.active": 1}},
{$group : { _id : "$_id", movies : {$push : "$bmarks"}, movie_ids: {$push : "$bmarks.movie_id"}}},
{$lookup: {from: "movie_comments", localField: "",foreignField: "movie_id",as: "comments"}},
{$unwind : "$comments"},
{$sort: {time_posted: -1}},
{$group: {_id: '$_id', comments : {$push : "$comments"}}}])

अब मान लें कि आप उसी डेटा का उपयोग कर रहे हैं जो आपने प्रदान किया है।

समस्या 2 :{$match : {"bmarks.active": 1}} किसी भी प्रविष्टि से मेल नहीं खाता।

ठीक करें:{$match : {"bmarks.active": 0}}

समस्या 3:कोई लुकअप फ़ील्ड परिभाषित नहीं है {$lookup: {from: "movie_comments", localField: "",foreignField: "movie_id",as: "comments"}}

फिक्स :{$lookup: {from: "movie_comments", localField: "movie_ids",foreignField: "movie_id",as: "comments"}}

समस्या 4 :पिछले लुक अप के लिए movie_ids के लिए कोई आराम चरण नहीं

ठीक करें :{$unwind : "$movie_ids"}

समस्या 5:नो टाइम पोस्टेड फील्ड {$sort: {time_posted: -1}}

फिक्स :सॉर्ट करने से पहले फ़ील्ड शामिल करें

इसलिए, सब कुछ एक साथ रखने के लिए आपको प्रत्येक फिल्म के लिए टिप्पणियों को निकालने के लिए नीचे कुछ ऐसा दिखने के लिए समग्र की आवश्यकता है।

db.user_movies.aggregate([
{$match : {mobile_no : mobile_no}},
{$unwind: "$movies"},
{$lookup: {from: "movies",localField: "movies",foreignField: "movie_id",as: "bmarks"}},
{$unwind : "$bmarks"},
{$match : {"bmarks.active": 0}},
{$group : { _id : "$_id", movies : {$push : "$bmarks"}, movie_ids: {$push : "$bmarks.movie_id"}}},
{$unwind : "$movie_ids"},
{$lookup: {from: "movie_comments", localField: "movie_ids",foreignField: "movie_id",as: "comments"}},
{$unwind : "$comments"},
{$group: {_id: '$_id', comments : {$push : "$comments"}}}])

नमूना आउटपुट

{
    "_id": ObjectId("5834ecf7432d92675bde9d83"),
    "comments": [{
        "_id": ObjectId("583d96d7e35f6e9c53c9e894"),
        "movie_id": "dallas00",
        "comment": "what a great movie."
    }, {
        "_id": ObjectId("583d96d7e35f6e9c53c9e895"),
        "movie_id": "dallas00",
        "comment": "awesome movie."
    }]
}

अपडेट करें:

db.user_movies.aggregate([
{$match : {mobile_no : mobile_no}},
{$unwind: {path: "$movies", includeArrayIndex: "moviePosition"}},
{$sort :  {moviePosition:1}},
{$lookup: {from: "movies",localField: "movies",foreignField: "movie_id",as: "bmarks"}},
{$unwind :"$bmarks"},
{$group : {_id : "$_id", movies : {$push : {movie_name:"$bmarks.movie_name", movie_id:"$bmarks.movie_id"} }}},
{$unwind : "$movies"},
{$lookup: {from: "movie_comments", localField: "movies.movie_id",foreignField: "movie_id",as: "comments"}},
{$unwind : "$comments"},
{$group:  {_id: "$movies.movie_id", movie_name: {$first:"$movies.movie_name"}, comments : {$push : {comment:"$comments.comment", time_posted:"$comments.time_posted"}}}},
{$sort :  {time_posted:-1}},
{$project:{_id:0, movie_id:"$_id", movie_name:1, comments: "$comments.comment"}}
]).pretty();



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor.js . के साथ कई Mongodb डेटाबेस का उपयोग करना

  2. किसी सरणी में किसी आइटम को अपडेट करें जो किसी सरणी में है

  3. पदानुक्रमित संरचना फायरस्टोर और उपसंग्रह

  4. MongoDB टेक्स्ट सर्च में स्टॉप वर्ड फ़िल्टरिंग अक्षम करें

  5. mongodb-10gen स्थापित करें apt-get . के साथ विफल