首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb在moongoose模式上的聚合和排序

mongodb在moongoose模式上的聚合和排序
EN

Stack Overflow用户
提问于 2016-11-26 01:43:05
回答 1查看 100关注 0票数 0

有两个mongoose模式

代码语言:javascript
复制
    const bookModel =  new Schema({
    title : String,
    content: String,
    author:{
        id:{
            type: ObjectId,
        },
        name:{
            type: String,
        }
    }
})


const commentModel = new Schema({
    text :String,
    bookid :{ { type : ObjectId , required : true } },
    inEnglish:{
        type: Boolean,
        default:false
    }
})

我们如何编写一个mongo查询来根据评论数量查找名著呢?

因此,编写find查询根据特定图书上的评论数量(其中inEnglish设置为true)对图书进行排序。

JSON在mongo中存储为:

图书JSON-

代码语言:javascript
复制
{
    "_id" :ObjectId(58368df330391521247f6aeb),
    "title": "Dan Brown",
    "content": "COntent of the book" 
}

评论JSON-

代码语言:javascript
复制
{
        "_id" :ObjectId(24568df330391765434f6fgh),
        "text":"Nice Book",
        "bookid":"58368df330391521247f6aeb",
        inEnglish: true

}
EN

回答 1

Stack Overflow用户

发布于 2016-11-26 02:15:56

我创建了一个小集合

代码语言:javascript
复制
>db.comments.find()

{"_id" : ObjectId("58387da2a32c4b96e67ec6b4"), "text" : "Nice Book", "bookid" : "58368df330391521247f6aeb", "inEnglish" : true }
{"_id" : ObjectId("58387da8a32c4b96e67ec6b5"), "text" : "Nice Book", "bookid" : "58368df330391521247f6aeb", "inEnglish" : true }
{"_id" : ObjectId("58387da9a32c4b96e67ec6b6"), "text" : "Nice Book", "bookid" : "58368df330391521247f6aeb", "inEnglish" : true }
{"_id" : ObjectId("58387da9a32c4b96e67ec6b7"), "text" : "Nice Book", "bookid" : "58368df330391521247f6aeb", "inEnglish" : true }
{"_id" : ObjectId("58387db0a32c4b96e67ec6b8"), "text" : "Nice Book", "bookid" : "58368df330391521247f6aec", "inEnglish" : true }
{"_id" : ObjectId("58387db2a32c4b96e67ec6b9"), "text" : "Nice Book", "bookid" : "58368df330391521247f6aec", "inEnglish" : true }

现在,为了获得预订评论,我运行以下命令

代码语言:javascript
复制
db.comments.aggregate(
    {$group : {_id : "$bookid", "count" : {$sum : 1}}},
    {$sort : {"count" : -1}},
    {$limit : 1}
)

基本上,我要做的是按图书ID分组并获取计数。

我的输出

代码语言:javascript
复制
{ "_id" : "58368df330391521247f6aeb", "count" : 4 }

注意:我没有使用inEnglish:true做过滤器。如果需要,可以将其包含在查询中,即

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40810180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档