如何通过数组键删除mongoose中的子文档?

时间:2014-03-19 11:02:52

标签: node.js mongodb mongoose

我有这样的文件:

{
  project: 'Book',
  author: 'Author',
  pages: [{},{},{},{}]
}

例如我想从pages数组中删除第二个元素。我尝试做这样的事情:

db.t.update(_id: "53296f43630a817c1af2a3e8"}, {$pull:{'test.$':1}})

但它对我不起作用。

1 个答案:

答案 0 :(得分:1)

你说它的方式,它很难匹配,因为那里什么也没有。但在现实世界中,你可能会尝试这样匹配:

db.t.update(
    { "_id": "53296f43630a817c1af2a3e8" }, 
    { "$pull": { "pages": { "value": 1 } }
)

假设有一个"值" "子文档中的属性"。

但是,如果你真的确实意味着什么东西无法匹配,那么试试这个:

db.t.update(
    { "_id": "53296f43630a817c1af2a3e8" }, 
    { "$set": { "pages.1": false } }
);

db.t.update(
    { "_id": "53296f43630a817c1af2a3e8" }, 
    { "$pull": { "pages": false } }
)

设置您可以匹配的值,然后匹配并将其删除。