このエラーは、展開されたクライアントとは異なるクライアントを介してドキュメントを挿入した場合に発生する可能性があります。
ここから:
_id フィールドが指定されていない場合、MongoDB は ObjectIds を _id フィールドのデフォルト値として使用します。クライアントが _id フィールドを追加しない場合、mongod は ObjectId を保持する _id フィールドを追加します。
mongoDB によって作成された ID はデプロイされたダッシュボードに表示されますが、それらは (デプロイされたによって生成された ID のような) 通常の文字列ではなく、文字列を探しているときにデプロイされた ID が見つかりません。
他の mongoDB クライアント (例: Robomongo )で次のようなクエリを実行してみてください。
db.yourcollection.find({_id: ObjectId("some_id_you_know_exists_in_collection")})
エラーがスローされない場合、ID は、デプロイによって作成されたのではない ObjectId である可能性が高くなります。
残念ながら、簡単な修正はありません。(少なくとも、大きなコレクションや複雑なアプリの場合はそうではありません。) 小さなコレクションの場合は、データを新しいコレクションに複製し、展開して新しい ID を作成することをお勧めします。
クイック、汚い、テストされていない:
dpd.collection.get({}, function(res) {
_.each(res, function(object){
object.oldId = object.id //add id backup
delete object.id
// post new object without id -> deployd creates a new id
dpd.newcollection.post(object, function(res, err) {
if(err) {
console.log(err);
};
if(res) {
console.log(res);
};
})
});
})
それが自分に合っているかどうかは、自分で判断する必要があります。