mongodb - 创建的集合试图删除重复的记录
问题描述
我创建了集合 test_emp
/* 1 */
{
"_id" : ObjectId("5e84200bdf949c00404ed5ff"),
"area" : "573",
"bc" : "NZ",
"bd" : "52001450",
"bg" : "52001450",
"borg" : "f52001450",
"bsg" : "54878",
"bsgname" : "INFORMATION TECHNOLOGY",
"o" : "S",
"friendlyCountryName" : "NZ",
"ctel" : "+1",
"mail" : "tl2625@nz.at.com",
"exch" : "204",
"ext" : "5408",
"facsimileTelephoneNumber" : null,
"givenName" : "POMAS",
"employeeNumber" : "45629"
}
/* 2 */
{
"_id" : ObjectId("5e84200bdf949c00404ed600"),
"area" : "573",
"bc" : "NZ",
"bd" : "52001450",
"bg" : "52001450",
"borg" : "f52001450",
"bsg" : "54878",
"bsgname" : "INFORMATION TECHNOLOGY",
"o" : "S",
"friendlyCountryName" : "NZ",
"ctel" : "+1",
"mail" : "tl2625@nz.at.com",
"exch" : "204",
"ext" : "5408",
"facsimileTelephoneNumber" : null,
"givenName" : "POMAS",
"employeeNumber" : "45629"
}
我想删除重复的记录,首先检查下面的聚合函数查询:
db.test_emp.aggregate({ $group: { _id: { "employeeNumber": "$employeeNumber", "givenName" : "$givenName" }}})
Error:
TypeError: pipeline[(pipeline.length - 1)] is undefined
Details:
DB.prototype._runAggregate@src/mongo/shell/db.js:236:1
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1062:12
DBCollection.prototype.aggregate@:1:355
@(shell):1:1
还尝试使用删除重复命令:
db.test_emp.ensureIndex( { employeeNumber:1 }, { unique:true, dropDups:true } )
errmsg" : "E11000 duplicate key error collection: phone.test_emp index: employeeNumber_1 dup key: { : \"0249527\" }",
"code" : 11000,
请建议使用 wht 查询从集合中删除这些重复记录。
解决方案
你有几个问题。
db.test.aggregate([
{
$group: {
_id: {
"employeeNumber": "$employeeNumber",
"givenName": "$givenName"
}
}
}
])
aggregate query
应由[]
您无法在现有集合上创建索引,因为您已经有重复数据。
那么你现在可以做什么:
- 创建一个集合
- 创建唯一索引 - 您尝试的第二个命令
- 从现有集合创建转储
mongodump
- 加载到新集合中。
- 放下你的旧收藏。
- 将新集合重命名为旧集合名称
推荐阅读
- php - Concrete5 MySQL 查询问题
- vue.js - 有没有办法传递 v-chip-group v-model id 而不是项目索引?
- machine-learning - 使用文本和数字列构建机器学习模型
- node.js - 如何在我的计算机不开机的情况下“永远”托管我的 NodeJS 应用程序?
- fetch - 我想通过 fetch 函数获取数据
- c# - 如何解决 C# 中的“无法为空内容创建 CMS 签名”错误?
- c++ - 在我自己的开源项目中使用修改后的 C++ 仅标头库的常用方法是什么?
- html - 文本与 JSPDF 2.0.0 重叠并自定义字体
- flutter - 颤动中的 Twitch 视频
- android - 如何在本机反应中将服务器初始化为客户端一次?