首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MongoDB根据该记录的值获取不同的记录

使用MongoDB根据该记录的值获取不同的记录
EN

Stack Overflow用户
提问于 2015-06-04 10:31:15
回答 1查看 136关注 0票数 5

我收藏的餐厅记录.Some在这个集合中属于某一集团(连锁型餐厅)。KfC等)而其他没有任何集团(个别餐厅,不属于任何连锁)。

例子:

馆藏

代码语言:javascript
运行
复制
{_id:"1",title:"rest1",address:"somethingx",chain_id:"123"},
{_id:"2",title:"rest2",address:"somethingx",chain_id:"123"},
{_id:"3",title:"rest3",address:"somethingy",chain_id:"0"},
{_id:"4",title:"rest4",address:"somethingx",chain_id:"0"} 

连锁收藏:

代码语言:javascript
运行
复制
{_id:"123",chain_name:"VSWEETS",address_deatils:[
                                          {restID:"",address:"somethingx"},
                                          {restID:"",address:"somethingx"}
                                         ]
}

{_id:"456",chain_name:"KFC",address_deatils:[]}

我需要用相似的chain_id来获取不同的餐厅,也就是说,如果它属于某个连锁(chain_id !=0),那么只有单一的餐厅应该来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 11:22:10

为此,您可以使用聚合框架。聚合管道将作为过滤地址上的餐馆的$match操作符的第一步。然后,$group管道阶段将根据chain_id键对过滤后的文档进行分组,并将累加器表达式$first应用到每个组的$$ROOT系统变量中。您可以使用$project管道阶段重塑文档。

为您提供所需结果的最终聚合管道如下:

代码语言:javascript
运行
复制
db.restaurant.aggregate([
    {
        "$match": { "address" : "somethingx" }
    },
    {
        "$group": {
            "_id": "$chain_id",
            "data": { "$first": "$$ROOT" }
        }
    },
    {
        "$project": {
            "_id" : "$data._id",
            "title" : "$data.title",
            "address" : "$data.address",
            "chain_id" : "$data.chain_id"
        }
    }
])

输出

代码语言:javascript
运行
复制
/* 0 */
{
    "result" : [ 
        {
            "_id" : "4",
            "title" : "rest4",
            "address" : "somethingx",
            "chain_id" : "0"
        }, 
        {
            "_id" : "1",
            "title" : "rest1",
            "address" : "somethingx",
            "chain_id" : "123"
        }
    ],
    "ok" : 1
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30641462

复制
相关文章

相似问题

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