Монго присваивает тот же ObjectId?MongoError: E11000 коллекция дубликатов ошибок ключа - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь вставить новые документы в коллекцию, но после первого (когда я пытаюсь вставить второй) Монго показывает мне следующую ошибку:

 MongoError: E11000 duplicate key error collection: bbdd.productions index: _id_ dup key: { : ObjectId('5b118dabefd04e51a28ffc4d') }

На самом деле этоимеет смысл, потому что "_id": ObjectId ("5b118dabefd04e51a28ffc4d") - это идентификатор, который был назначен первому вставленному документу.

Я читал, что, возможно, существуют индексы, вызывающие проблему, но эта коллекция имеет только индекс id .

db.productions.getIndexes () показывает:

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "production_rapipizza.productions"
    }
]

Я пытался удалить с помощью .dropIndexes () и перезапустить приложение, но это не сработало (я получаю ту же ошибкукогда я создаю новые документы из этой коллекции).

Я думаю, что Монго назначает один и тот же ObjectId первому документу и следующему, но ... это невозможно, не так ли?

model:

    model.Production = mongoose.model("productions", new Schema({
    products: {type: Array, required: true},
    date: {type: Date, required: true},
    user: {type: ObjectId, ref: 'users', required: true},
    createdAt: {type: Date, default: Date.now}
}, {collection: 'productions', timestamps: true}));

Мой запрос в узле:

    app.post('/api/production', (req, res, next) => {
    req.body.date = new Date(req.body.date);
    const production = new model.Production(req.body);
    return production.save().then(
        () => res.status(200).send("La producción para el día indicado fue registrado exitosamente"))
        .catch(next)
});

, если я делаю эквивалент через оболочку mongodb, он работает правильно, так что я думаю, что я делаю неправильно вышекод.Это то, что я называю «эквивалентом»:

db.productions.insert({products: [ { "product" : "oneproduct", quantity : 100 } ], date : ISODate("2018-06-03T03:00:00Z"), user : ObjectId("5b0b50326b351b4527b067c6")});

Мой первый вставленный документ:

{ "_id" : ObjectId("5b118dabefd04e51a28ffc4d"), "products" : [ { "product" : "nameoftheproduct", "quantity" : "100" } ], "date" : ISODate("2018-06-01T03:00:00Z"), "user" : ObjectId("5b0b50326b351b4527b067c6"), "createdAt" : ISODate("2018-06-01T18:17:15.404Z"), "updatedAt" : ISODate("2018-06-01T18:17:15.404Z"), "__v" : 0 }

Любая помощь или идеи будут с благодарностью приняты.

1 Ответ

0 голосов
/ 01 июня 2018

Я использую один и тот же компонент для сохранения и редактирования.Так что, если в начале я выбрал какой-либо записанный продукт, а затем попытался создать новый, он сохранил _id первого.Мне нужно было очистить _id в состоянии реакции.

...