MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pendefinisian skema Mongodb

Dari apa yang saya lihat dari kode Anda, News Anda saat ini dan Review Skema terlihat bagus.

Anda perlu mendefinisikan Schema lainnya untuk Trending .

var TrendingSchema = new mongoose.Schema({
    referenceId : {
        type : mongoose.Schema.Types.ObjectId
    },
    postType : String //To store News or Reviews
});

Saat menyimpan News baru atau Reviews , masukkan _id dokumen yang baru disimpan di trending koleksi.

var news = new News();
news.image = newsImage;
...
news.save(function(err,result)
{
    if(!err)
    {
        var trending =  new Trending();
        trending.referenceId = result._id;
        trending.postType = "News";
        treding.save(function(err)
        {
            if(!err)
            {
                //success response
            }
            else
            {
                //error  response
            }
        });
    }
    else
    {
        //send error response
    }
});

Demikian pula saat menyimpan Postingan Ulasan

var review = new Review();
review.image = reviewImage;
...
review.save(function(err,result)
{
    if(!err)
    {
        var trending =  new Trending();
        trending.referenceId = result._id;
        trending.postType = "review"
        treding.save(function(err)
        {
            if(!err)
            {
                //success response
            }
            else
            {
                //error  response
            }
        });
    }
    else
    {
        //send error response
    }
});

Jadi sekarang Trending Koleksi akan berisi News yang baru disimpan atau Review , dalam urutan created . Dengan demikian Anda akan bisa mendapatkan Review baru atau News Posting.

Saat mengambil Trending , Anda dapat populate mereka menggunakan News atau Review Schema berdasarkan postType .

Trendign.find({}).limit(10).exec(function(err,result)
{
    if(!err && result.length!=0)
    {
        var trendingPosts = [];
        result.forEach(function(trending){
            if(trending.postType === "News"){
                trending.populate({path : 'referenceId',model : 'News'},function(err,populatedItem)
                {
                    if(!err)
                    {
                        trendingPosts.push(populatedItem);
                    }
                });
            }
            else if(trending.postType === "Review"){
                trending.populate({path : 'referenceId',model : 'Review'},function(err,populatedItem)
                {
                    if(!err)
                    {
                        trendingPosts.push(populatedItem);
                    }
                });
            }
        });
        //now send the trendingPost array with latest News and Review Posts
    }
    else
    {
        //send Error response
    }
});

Sekarang Anda dapat menampilkan News terbaru atau Review dan tulis jenis postType .

Semoga ini yang Anda inginkan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. apakah ada cara untuk menghasilkan ObjectId secara otomatis ketika Model luwak baru?

  2. MongoDB - Tarik beberapa objek dari array

  3. Masalah instalasi driver MongoDb PHP di wamp

  4. Variabel TypeScript tanda tanya

  5. Luwak mendapatkan dokumen yang cocok dengan array