mongodb 联合查询问题
高洛峰
高洛峰 2017-04-21 11:18:37
0
3
595
class Subject(Document):
'''
新闻主题信息
'''
author_ref = ReferenceField(Account,dbref=False)  #关联用户
when = DateTimeField(default=datetime.datetime.now, required=True)                                  
title = StringField(max_length=50)  `                    # 文章标题

`

    class Comment(Document):
'''
评论
'''
subject_ref = ReferenceField(Subject,dbref=False)   #关联主题
display_name = StringField(max_length=50)
author_ref = ReferenceField(Account,dbref=False)
content = StringField()                          # 内容

问题:第一个是主贴子表,第二个是评论表,现在要查询出主贴的列表,并且统计出主贴的评论数 有什么好的办法 ?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(3)
小葫芦

Hanya bercakap tentang keperluan saya. Bilangan ulasan harus mempunyai atribut medan tambahan pada siaran utama. Mengapa anda perlu mengira setiap kali Jika siaran sangat popular dan mempunyai jutaan komen, adakah anda masih perlu mengira?

迷茫

Berbual dengan orang besar. Terdapat beberapa cara. Ini adalah soalan yang sangat menarik.

  1. Kekalkan skema semasa
    Model dokumen MongoDB menentukan bahawa ia tidak mempunyai gabungan, jadi ia perlu disoal dua kali. Lihatlah sintaks Object-Document-Mapper yang anda gunakan.

  2. Benamkan ulasan dalam siaran dan kirakannya di sisi pelanggan.
    Semasa Pertanyaan, keseluruhan dokumen dibawa kepada pelanggan dan dikira. Bahagian penghantaran data ini sia-sia. Tetapi apabila satu siaran dipaparkan, semua maklumat tersedia. Jika anda tidak mempunyai banyak ulasan, skema ini ialah pendekatan yang disyorkan. Tetapi kita boleh memperbaiki lagi.

  3. Benamkan ulasan dalam siaran dan gunakan rangka kerja pengagregatan untuk mengiranya.
    Gunakan db.posts.aggregate(...), berehat, kumpulan. Kaedah ini agak berlebihan...

  4. Benamkan ulasan dalam siaran dan tambahkan cache pengiraan.
    Anda juga boleh mengekalkannya seperti sekarang seperti yang dicadangkan di atas, tetapi jika mereka berada dalam dokumen, kemas kini akan meletakkan ulasan $push ke dalam ulasan, dan pada masa yang sama $inc akan dikira, yang mengekalkan konsistensi sangat baiklah. Apabila membuat pertanyaan, hanya tulis parameter unjuran kedua tanpa ulasan. Sebagai contoh, anda ingin mencari 10 yang terdekat.

db.posts.find({}, { comments: -1 }).sort({"when": -1}).limit(10)
伊谢尔伦

Saya mencari banyak maklumat, dan akhirnya menambah atribut statistik yang berasingan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!