sql >> データベース >  >> NoSQL >> MongoDB

Mongoは、Meteorアプリケーションの_id_フィールドで重複キーエラーを出します

    これで問題が解決するわけではありませんが、正しい方向を示し、新しい質問を作成するために使用できる問題を特定できるようになるはずです。

    ありません。インデックスは1つだけで、名前とキー記述子があります。それは同じことではありません。 名前 デフォルトのインデックスの_id_ 、そのキーは_idです 。

    _id 通常、サーバー側ではなくクライアント側で作成されます。 2ZGvRfuD8iMvRiXJdであるため、問題はこれらのキーがどこから来ているかです。 確かにObjectIdではありません 。これは流星キーであるか、カスタムの主キーを使用している可能性がありますが、これらのキーがどのように生成されるのかわかりません。キーを生成するものは何でも衝突の影響を受けやすいのでしょうか?

    それについての詳細は役に立ちますが、質問が大きくなりすぎたり、多くの履歴が得られたりしないように、新しい質問を言い換えることをお勧めします。

    これが最初の答えの補題です。必須の主キーインデックスを削除することはできません。

    編集:

    Meteorは、デフォルトで、MongoDbとは異なる方法でIDを生成します ObjectIdの規則であるため、これは理にかなっています。 クライアントの数が多い場合に衝突が発生する可能性が高くなります (つまり、クライアントがサーバーインスタンスではなく、クライアントブラウザであり、おそらく2〜3桁多い場合)

    代わりに、Meteorは明らかにメソッドを使用して、疑似乱数を一貫して生成します。クライアントとサーバー上 。苛立たしいことに、実装はPRNGを使用し、はnotにフォールバックします暗号に強い決定論的乱数ジェネレーター(Alea) 。言い換えれば、正確に IDが生成されるのは、環境の詳細に依存するため、注意が必要な場合があります。

    回避策:ObjectIdを使用してみてください 主キーとして:

    Orders= new Meteor.Collection('Orders', {idGeneration: 'MONGO'});
    


    1. タイプのプロパティが見つかりません...MongoDBおよびSpring-DataでQueryDslPredicateExecutorを使用する場合

    2. MongoDBからの読み方

    3. DBを操作するたびにMongoDB接続を開く必要がありますか?

    4. FlaskはMongdbのクエリに時間がかかります