【发布时间】:2013-06-24 21:33:15
【问题描述】:
所以我有一个使用大量嵌入式文档的应用程序,这很好。但是我注意到,当您在 Mongo shell 中 show collections 时,一些嵌入式文档不会显示。
通常这不是问题,但是在设置嵌入文档时,我不小心在其中一个条目中添加了一个空条目。我通常会做这样的事情来删除条目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 是我一直在寻找的东西。如果您想将此作为答案添加一个小解释和文档链接,我很乐意接受您的回答。
标签: mongodb mongo-shell