Итак, у меня есть приложение, в котором используется много встроенных документов, что хорошо. Однако я заметил, что некоторые встроенные документы не отображаются, когда вы show collections
в оболочке Mongo.Удаление встроенного документа без сборки через оболочку Mongo
Как правило, это не проблема, но, когда вы устанавливаете встроенные документы, я случайно добавил пустую запись в одну из записей. Обычно я делал что-то подобное, чтобы удалить запись db.collection.remove({_id: ObjectId('<OBJECT_ID>')})
, но поскольку некоторые из них не являются фактическими коллекциями, я не могу это сделать.
Я также не знаю, как я смог бы успешно выполнить это, фактически удалив документ. Я мог бы связать его с записью, но у меня есть ощущение, что он оставит этот встроенный документ плавающим где-то в БД.
Любые идеи, как это сделать?
Чтобы дать вам представление о том, что я говорю, пример записи:
entry = {
_id: ObjectId('blah blah blah'),
name: {
first: 'example',
last: 'city'
},
log : [
{
_id: ObjectId('some id'),
action: 'whatever',
someField: 'etc.'
},
{
_id: ObjectId('another id')
},
{
_id: ObjectId('yet another id'),
action: 'who cares',
someField: 'data'
}
]
}
Что вы хотите удалить из этого документа? одна из записей журнала? Почему бы не использовать db.collection.update ({_ id: blah blah}, {$ pull: {"log._id": another_id}})? –
Я хочу удалить одну запись, находящуюся в массиве. Казалось бы, что $ pull было тем, что я искал. Если вы хотите добавить это как ответ с небольшим пояснением и ссылкой на документацию, я был бы рад принять ваш ответ. –