业务需求

在使用MongoDB的过程中,需要将数据库中有效的值从一个总的集合中复制到一个存储有效值的集合中,那么关于这个需求,该怎么实现呢?

实现方案

示例:

use dbname # 切换到数据所在的数据库,如:dbname
db.all_info.find({'notice_content':{$ne:''}}).forEach(function(x){db.useful_data.insert(x)})

上边的示例,是将all_info集合中的数据通过{'notice_content':{$ne:''}筛选条件,将其中notice_content字段不为空的数据,一个一个循环的复制到useful_data这个专门存储有用数据的集合中。

注意事项

  • 数据库认证
    use admin # 切换到需要认证的数据库,如:admin
    db.auth(username, password)  # 使用账户和密码认证数据库
    

    对于有账户和密码的数据库可以使用该方法认证

  • insert 语句已弃用,建议使用 insertOne 语句代替,如:
    db.all_info.find({'notice_content':{$ne:''}}).forEach(function(x){db.useful_data.insertOne(x)})
    
    • MongoDB Compass 中的命令行里运行 insert 语句会报警告:DeprecationWarning: Collection.insert() is deprecated. Use insertOne, insertMany, or bulkWrite.
    • 虽然在 MongoDB Compass 中有警告,但是可以执行成功,而在 Xshell 和 Navicat 中则不报警告。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐