我目前使用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')
,这将把某些东西转换为objectId以检查数据库中的对象ID。而且看起来你的objectIds是无效的。所以我不知道你是如何处理这些objectIDs的。你得到了什么错误? - jack blank