MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongo dá erro de chave duplicada no campo _id_ no aplicativo Meteor


Isso não resolverá seu problema, mas deve apontar na direção certa e talvez permitir que você isole o problema que você pode usar para criar uma nova pergunta:

Não há. Há apenas um índice e ele tem um nome e um descritor de chave. Isso não é a mesma coisa. O nome do índice padrão é _id_ , sua chave é _id .

O _id é normalmente criado do lado do cliente, não do lado do servidor. A questão é de onde vêm essas chaves, porque 2ZGvRfuD8iMvRiXJd certamente não é um ObjectId . Isso pode ser uma chave de meteoro ou você usa alguma chave primária personalizada, mas não sei como essas chaves são geradas. Talvez o que gera a chave seja suscetível a colisões?

Mais informações sobre isso seriam úteis, mas sugiro formular uma nova pergunta para que a pergunta não fique muito grande ou tenha muito histórico.

Esse é um lema da primeira resposta:você não pode excluir o índice de chave primária obrigatório.

Editar:

Meteor, por padrão, gera ids de uma maneira diferente do MongoDb . Isso faz sentido, porque a convenção para ObjectId torna as colisões prováveis ​​se o número de clientes for grande (ou seja, se os clientes não forem instâncias de servidor, mas navegadores de cliente, dos quais provavelmente há 2-3 ordens de magnitude a mais).

Em vez disso, o Meteor aparentemente usa o método para gerar consistentemente números pseudo-aleatórios no cliente e no servidor . Irritantemente, a implementação usa um PRNG e retorna para um não gerador de números aleatórios determinísticos cripto-forte (Alea) . Em outras palavras, descobrir como exatamente seus ids estão sendo gerados pode ser complicado porque depende de muitos detalhes do seu ambiente.

Solução alternativa:tente usar ObjectId como chave primária:
Orders= new Meteor.Collection('Orders', {idGeneration: 'MONGO'});