MongoDB:如何将同一个数据库下的集合复制到另一个集合?
场景描述在使用MongoDB的过程中,需要将数据库中有效的值从一个总的集合中复制到一个存储有效值的集合中,那么关于这个需求,该怎么实现呢?实现方案示例:db.all_info.find({'notice_content':{$ne:''}}).forEach(function(x){db.useful_data.insert(x)})上边的示例,是将all_info集合中的数据通过{'notice
·
业务需求
在使用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 中则不报警告。
- 在 MongoDB Compass 中的命令行里运行
更多推荐
已为社区贡献7条内容
所有评论(0)