各位大牛,求教mongodb如何删除重复的记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各位大牛,求教mongodb如何删除重复的记录相关的知识,希望对你有一定的参考价值。
很简单,比如数据里有三条这样重复的数据id:1,'hello':'world'
id:2,'hello':'world'
id:3,'hello':'world'
你删除数据的条件是'hello':'world'并且id>1
这样就可以留下一条数据,并且删除了重复的数据
当然你的真实环境肯定比这复杂,自己想想怎么处理吧~ 参考技术A 在MongoDB中,文档是对数据的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各种语言的Driver)都会使用这种抽象,它的表现形式就是我们常说的BSON(BinaryJSON)。BSON是一个轻量级的二进制数据格式。MongoDB能够使用BSON,并将BSON作为数据的存储存放在磁盘中。当Client端要将写入文档,使用查询等等操作时,需要将文档编码为BSON格式,然后再发送给Server端。同样,Server端的返回结果也是编码为BSON格式再放回给Client端的。
MongoDB:如何在 MongoDB Shell 中删除集合的所有记录?
【中文标题】MongoDB:如何在 MongoDB Shell 中删除集合的所有记录?【英文标题】:MongoDB: How To Delete All Records Of A Collection in MongoDB Shell? 【发布时间】:2018-03-04 05:58:05 【问题描述】:我试过了
db.users.remove(*)
虽然它返回错误,但我该如何清除所有记录?
【问题讨论】:
db.getCollection('collectionname').remove() 【参考方案1】:使用deleteMany
函数(docs):
假设您的收藏名为users
:
db.users.deleteMany()
deleteMany
将 filter 作为参数,并将 empty document 作为过滤器传递,相当于要求删除集合的所有成员。
请注意,remove
应该仍然有效,但您需要传递相同的空文档:
db.users.remove()
但是,remove
已被弃用,如果您的 mongo 安装是最新的,使用 remove
应该会导致弃用警告,指示您应该改用首选方法之一。从 1.0.7 开始:
DeprecationWarning:Collection.remove() 已弃用。使用 deleteOne, deleteMany、findOneAndDelete 或 bulkWrite。
【讨论】:
【参考方案2】:请尝试使用以下代码从所有集合中删除所有文档,除了从“系统”开始。
use('DatabaseName');
db.getCollectionNames()
.filter((collectionName) => collectionName.indexOf("system.") === -1)
.forEach((collectionName) =>
print(`Removing: $db[collectionName].count() documents from $collectionName`);
db[collectionName].deleteMany();
);
此代码也可以在 MongoDB 游乐场中运行。 它还将打印每个集合删除的文档数。
【讨论】:
【参考方案3】:这是删除 MongoDB shell 或 MongoDB Compass shell (_MongoSH) 中集合的所有记录的命令。。 p>
show dbs -> to list all the database
use test-database -> to select the database
db.getCollection('orders').deleteMany() -> to select the collection and deletes all the data.
或者
show dbs -> to list all the database
use test-database -> to select the database
db.orders.remove() -> to select the collection and deletes all the data.
【讨论】:
【参考方案4】:从 cmd 中的集合中删除所有文档:
cd C:\Program Files\MongoDB\Server\4.2\bin
mongo
use yourdb
db.yourcollection.remove( )
这个例子是为 MongoDB 4.2 制作的
【讨论】:
【参考方案5】:要删除所有集合中的所有文档:
db.getCollectionNames().forEach( function(collection_name)
if (collection_name.indexOf("system.") == -1)
print ( ["Removing: ", db[collection_name].count(), " documents from ", collection_name].join('') );
db[collection_name].remove();
);
【讨论】:
【参考方案6】:db.users.count()
db.users.remove()
db.users.count()
【讨论】:
【参考方案7】:您可以从 MongoDB 中的一个集合中删除所有文档,您可以使用以下方法:
db.users.remove()
或者,您也可以使用以下方法:
db.users.deleteMany()
关注以下 MongoDB documentation,了解更多详情。
要从集合中删除所有文档,请将空过滤器文档
传递给
db.collection.deleteMany()
或db.collection.remove()
方法。
【讨论】:
【参考方案8】:remove()
的参数是一个过滤文档,因此传入一个空文档意味着“全部删除”:
db.user.remove()
但是,如果您确实要删除所有内容,可能最好还是删除该集合。虽然这可能取决于您是否在集合上有用户定义的索引,即在删除集合后准备集合的成本是否超过 remove()
调用与 drop()
调用的较长持续时间。
更多详情in the docs.
【讨论】:
remove
现在已弃用。改用db.user.deleteMany()
@MahdiehShavandi 查看 Mongo shell 文档我看不到任何说 remove
已弃用 (docs.mongodb.com/manual/reference/method/db.collection.remove)。您能否提供链接或引用来支持该声明?
对不起,我最好说:它会在未来的版本中被弃用。它只是在终端中记录此声明。
弃用警告:Collection.remove() 已弃用。使用 deleteOne、deleteMany、findOneAndDelete 或 bulkWrite。以上是关于各位大牛,求教mongodb如何删除重复的记录的主要内容,如果未能解决你的问题,请参考以下文章
如何在excel中将两列对应的数据以其中一列的排序 求教各位高手