这个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值。应该怎么做呢?

阅读 2.5k
1 个回答

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

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}})
            }
        })
    })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏