0

所以我有一个使用大量嵌入式文档的应用程序,这很好。但是我注意到当你show collections在 Mongo shell 中时,一些嵌入的文档没有显示。

通常这不是问题,但是在设置嵌入式文档时,我不小心在其中一个条目中添加了一个空条目。我通常会做这样的事情来删除条目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'
        }
    ]
}
4

1 回答 1

1

如果要删除其中一个日志条目,则需要$pull 运算符

格式类似于:

db.collection.update({_id:<id-of-document-to-update>},
                     {$pull:{"log._id":<id-of-log-entry-to-remove>"}}
)

这就是说,找到具有确定的文档_id并从日志数组中删除具有确定的条目sub_id

于 2013-06-25T15:43:34.310 回答