Uso de sparse: true aún obteniendo MongoError: E11000 error de clave duplicada

Esquema (../modelos/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);
    })
}

noticias.js

// if country # is not in the database
    AM.notOwned(country, function(error, resp){
        if (error) console.log("error: "+error);
        else 
        {
            // do stuff
        }
    })

error:

MongoError: E11000 duplicate key error index: bot.contacts.$name_1  dup key: { : null }

Después de ver el mensaje de error, busqué en Google y aprendí que cuando se crea el documento, ya que el nombre no está establecido, se trata como nulo.Ver el hilo de grupo de Google Mongoose La primera vez que se llama a AM.notOwned funcionará ya que no hay ningún documento en la colección sin una clave de nombre. AM.notOwned insertará un documento con un campo de ID y un campo de país.

Las siguientes llamadas de AM.notOwned fallan porque ya hay un documento sin campo de nombre, por lo que se trata como nombre: nulo, y el segundo AM.notOwned se llama falla porque el campo "nombre" no está establecido y se trata como nulo ; por lo tanto no es único.

Entonces, siguiendo los consejos del hilo de Mangosta y leyendo elmongo docs Miré a usar escaso: cierto. Sin embargo, sigue tirando el mismo error. Mirando más allá, pensé que podría ser el mismo problema que:esta, pero establecer el esquema para nombrar: {type: String, index: {unique: true, sparse: true}} tampoco lo arregla.

Esta ASI QUE. La pregunta / respuesta me lleva a creer que podría deberse a que el índice no es correcto, pero no estoy seguro de cómo leer el archivo db.collection.getIndexes () de la consola de Mongo.

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
    }
]

¿Qué puedo hacer para resolver este error?

Respuestas a la pregunta(1)

Su respuesta a la pregunta