这个mongoDB集合怎么操作

查看:109
本文介绍了这个mongoDB集合怎么操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

下面这两个mongoDB集合的操作应该怎么做呢?

有两个集合:
Collection:categories

    {"category":"animal","category_id":"1"}
    {"category":"fruit","category_id":"2"}
    {"category":"sport","category_id":"3"}

Collection:details,它没有category_id这一项:

    {"id":"1","name":"apple","category":"fruit"}
    {"id":"2","name":"pear","category":"fruit"}
    {"id":"3","name":"football","category":"sport"}
    {"id":"4","name":"basketball","category":"sport"}
    {"id":"5","name":"cat","category":"animal"}
    {"id":"6","name":"dog","category":"animal"}

问题:

我想把details中的每一条加上category_id项,它的值就是categories中对应的category_id值。应该怎么做呢?

解决方案

这属于集合间的引用问题,解决办法代码如下。

fruit=db.categories.findOne({"category":"fruit"})
db.details.updateMany({"category":"fruit"},{$set:{"category_id":fruit.categsory_id}})

上述代码做到了为details中的所有的{"category":"fruit"}项加上category_id项,它的值就是categories中的{"category":"fruit"}项对应的category_id值。

为details中剩余的添加category_id是同理的,只需要将fruit的部分替换成animal和sport即可。

游标升级版...

    db.details.find().forEach( (x)=> {
           db.categories.find().forEach( (y)=> {
            if(y.category===x.category){
                db.details.updateMany({"category":x.category},{$set:{"category_id":y.category_id}})
            }
        })
    })

这篇关于这个mongoDB集合怎么操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆