Эта ошибка может возникнуть, если вы вставляете документы через другой клиент, чем deployd.
От here:
MongoDB использует ObjectIds в качестве значения по умолчанию для поля _ID, если поле _id не указано ... если клиент не добавляет поле _id, mongod добавит поле _id который содержит ObjectId.
Хотя идентификаторы, созданные MongoDB видны в deployd приборной панели, они не являются нормальными строками (как идентификаторы, порождаемых deployd) и deployd не находит их, когда он ищет строку.
Попытка выполнить запрос, как следующий с любым другим клиентом MongoDB (например Robomongo):
db.yourcollection.find({_id: ObjectId("some_id_you_know_exists_in_collection")})
Если он не выдаст ошибку, то идентификатор скорее всего, ObjectId, который не был создан deployd ,
К сожалению, нет простого исправления. (По крайней мере, не для больших коллекций и сложных приложений.) Для коллекций SMALL я бы предложил просто дублировать данные в новую коллекцию и позволить deployd создавать новые идентификаторы.
Быстрые, грязный и непроверенный:
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);
};
})
});
})
Вы должны решить для себя, если это работает для вас.
Это была проблема, я импортировал данные из csv. способный решить проблему путем импорта без идентификаторов. – kartikshastri