【发布时间】:2017-08-08 03:43:50
【问题描述】:
我目前正在使用 Node.js 和 Mongoose 来操作 MongoDB 数据库。我想从数组本身的数组中删除一个对象。
var newTable = new module.Table({
"_id": ObjectId("1"),
"name": "Table1",
"items": [
{
"_id": ObjectId("11"),
"name": "Item1",
"subscribers": [
{
"itemId": "111"
},
{
"itemId": "112"
}
]
}
]
}).save();
我试过这个查询,但没有效果:
module.Table.update(
{ "items._id": "11" },
{ $pull: { "items.$.subscribers": { "itemId": "112" } } },
{ "safe": true },
function (err, obj) {
if (err) console.log(filename + " @ module.Table.update(): " + err);
}
);
请帮我查询一下。
注意 1:ObjectId("xxx") 是本示例的简化引用。
注意2:我发现了这个错误,这是我的错误,查询需要id作为字符串(而不是ObjectId)。
【问题讨论】:
-
我看到的第一件事是你有
{ "itemId": ObjectId("112") } }。你意识到javascript没有objectId。您可能需要执行以下操作:new mongoose.mongo.ObjectId('56cb91bdc3464f14678934ca')将某些内容转换为对象 ID 以检查数据库中的对象 ID。看起来您的 objectIds 无效。所以我不知道您如何使用这些 objectID。你遇到了什么错误? -
你说得对,我忘了说明 ObjectId("xxx") 是这个例子的简化引用。
标签: arrays node.js mongodb mongoose pull