-2

MongoDB (またはおそらく Mongoose save ) によって生成された「_id」が、途中に「bad」という単語が含まれている場合の意味を知っている人はいますか?

eg: 521b633274bad76823000002

ネットやここで答えを見つけることができませんでした。

これは「保存」時に発生していましたが、ドキュメントを「更新」したいときにのみ発見されました。更新は許可されません。

 db.collection.update(...

試行された「更新済み」オブジェクトからのコールバックは常に null で、ドキュメントは更新されませんでした。

データベースを切り替えると問題が解決したので、これはコードではないと確信しています (コードは非常に単純です)。

Node.js で mongojs と mongoose の両方を使用します。

どうもありがとう、

ロブ

4

2 に答える 2

5

それは何の意味もありません。

ObjectIDは、文字を含むことができる 16 進文字列です0123456789abcdef。つまり、「bad」、「beef」、「dead」、「deaf」、「babe」、「cafe」など、これらの 6 文字で記述できる単語は、一定の確率で出現するということです (正確には可能性はご相談ください

あなたの場合、文字列「bad」はマシン ID (「74bad7」) である 3 バイトに表示されるため、同じマシンによって作成されたすべての ObjectID には、この 6 桁の文字列が含まれます。マシン ID の生成方法はドライバーによって異なりますが、通常はホスト名または MAC アドレスの MD5 ハッシュの最初の 6 桁を使用して作成されます。したがって、これ以上「悪い」objectID が必要ない場合は、それらを変更して実験し、気に入ったものが得られるまで力ずくで試してみてください ;)

ドキュメントの更新に関する問題には別の理由があるはずですが、提供された詳細には問題のヒントが含まれていません。

于 2013-08-26T15:05:12.980 に答える
2

abcdef16 進文字のいずれかがObjectID 値の任意の場所に表示され、場合によってはグループ化されて、bad、dead、beef などの楽しい単語が作成されるため、これは単なる偶然です。

于 2013-08-26T15:00:45.383 に答える