- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
架构 (../models/add.js)
var addSchema = new Schema({
name: {type: String, unique: true, sparse: true},
phone: Number,
email: String,
country: Number
});
module.exports = mongoose.model('Contact', addSchema);
add-manager.js
var Add = require('../models/add.js');
var AM = {};
var mongoose = require('mongoose');
module.exports = AM;
AM.notOwned = function(country, callback)
{
Add.update({country: country}, {country: country}, {upsert: true}, function(err, res){
if (err) callback (err);
else callback(null, res);
})
}
news.js
// if country # is not in the database
AM.notOwned(country, function(error, resp){
if (error) console.log("error: "+error);
else
{
// do stuff
}
})
错误:
MongoError: E11000 duplicate key error index: bot.contacts.$name_1 dup key: { : null }
看到错误消息后,我四处搜索并了解到创建文档时,由于未设置名称,因此将其视为 null。 See Mongoose Google Group Thread第一次调用 AM.notOwned 时它将起作用,因为集合中没有任何文档没有名称键。然后 AM.notOwned 将插入一个包含 ID 字段和国家/地区字段的文档。
随后的 AM.notOwned 调用失败,因为已经有一个没有 name 字段的文档,因此将其视为 name: null,并且第二个 AM.notOwned 调用失败,因为未设置字段“name”并被视为也为空;因此它不是唯一的。
所以,听从 Mongoose 线程的建议并阅读 mongo docs我看着使用稀疏:真。但是,它仍然抛出相同的错误。进一步研究它,我认为它可能与以下问题相同:this ,但是将架构设置为 name: {type: String, index: {unique: true, sparse: true}} 也不能解决它。
This所以。问题/答案让我相信这可能是由于索引不正确造成的,但我不太确定如何从 Mongo 控制台读取 db.collection.getIndexes()。
db.contacts.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "bot.contacts",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"name" : 1
},
"unique" : true,
"ns" : "bot.contacts",
"name" : "name_1",
"background" : true,
"safe" : null
}
]
我可以做些什么来解决这个错误?
最佳答案
您需要在 shell 中删除旧的非稀疏索引,以便 Mongoose 可以在您的应用下次运行时使用 sparse: true
重新创建它。
> db.contacts.dropIndex('name_1')
关于node.js - 使用稀疏 : true still getting MongoError: E11000 duplicate key error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029157/
我的问题是关于 mongo 未连接到服务器?为什么它说在第一次连接时无法连接到服务器 [localhost:27017] [MongoError: connect ECONNREFUSED 127.0
我有一个新安装的 MongoDB 服务器在 AWS Ubuntu EC2 上运行。 服务器上没有安装其他任何东西。 该数据库当前包含 35 个文档,每个文档大小为 3 MB,这意味着不到 110 MB
我有我的docker-compose业务流程,但出现此错误: connection error: { MongoError: failed to connect to server [172.17.0
我们最近升级到了 Play 2.7.0,并使用 play2-reactivemongo 版本 0.16.2 和reactivemongo 0.16.3。我们使用reactivemongo-shaded
我第一次使用 Mongoose 事务。按照文档和一些文章,我能够使用 让它运行起来。运行-rs 对于本地副本。但是,我遇到了两个问题, 即使事务反射(reflect)在副本集上, Mongoose 总
问题是,我的控制台出现错误: { [MongoError: $regex has to be a string] name: 'MongoError', message: '$regex ha
我正在尝试将 node.js 应用程序连接到具有副本集的 MongoDB,但是在执行任何写入操作时它会引发错误。 它抛出 MongoError: not master。 它尝试在辅助 mongo 实例
我正在尝试从数组中获取数据,并希望将其传递给 $in 运算符内的查找查询。但它给出了一个错误说 $in needs an array const fileIds = _.get(result, 'fi
我正在为 NodeJS 使用 MongoDb 驱动程序。 我在使用聚合时遇到问题。错误是 {"name":"MongoError","message":"unknown group operator
当我试图将太大的数据推送到 mongoDb 时,我收到此错误:MongoError: document is larger than the maximum size 16777216 我知道,这是正
当我这样做时: return scores.updateQ({_id:score._id}, { $set:{"partId":partId,"activityId":activityId},
我有 2 个应用程序服务器,它们连接到一个副本集(主要、次要和仲裁者)。 我面临的问题是 [ 'MongoError: no primary found in replicaset', '
我正在创建一个使用 Mongoose 与 MongoDb 交互的简单应用程序,独特的验证错误处理一直困扰着我。 UserSchema = new Schema({
我正在构建一个 REST API,但每次加载我的网站时,我都会收到 MongoError:拓扑已损坏。有人可以帮我解决这个问题吗?我感觉异步运行有问题。 const client = new Mong
我使用的是 Mongoose 5.1.5 版,Mongodb 3.0.10 版当我使用 mongoose Model.geoSearch 方法时,它给我一个错误,说 MongoError: No ge
当我尝试连接 node.js 应用程序时,我得到: MongoError: connection 0 to 127.0.0.1:27017 closed var MongoClient = requi
我正在研究 Node.js,我找不到任何解决方案。我的控制台向我发送了很多消息,其中一条更特别奇怪:GET/signup - - ms - -有人对此有任何想法吗?提前致谢! ////////////
在 Heroku 上运行应用程序时,将 Parse-Server 与 mLab 结合使用,我在日志中收到以下错误: app[web.1]: /app/node_modules/parse-server
我在尝试连接 mongoDB 时不断收到错误消息。我知道有很多问题与此类似,我已经检查了所有问题,但没有找到解决我的问题的方法。 这是确切的错误: 连接错误:{ MongoError: connect
我升级了我的 Mongoose ,所以我当然开始得到这些: DeprecationWarning: Mongoose: mpromise (mongoose's default promise lib
我是一名优秀的程序员,十分优秀!