gpt4 book ai didi

node.js - MongoDB/Mongoose $pull(删除)子文档不起作用

转载 作者:可可西里 更新时间:2023-11-01 09:12:15 32 4
gpt4 key购买 nike

为此把我的头撞到键盘上。

只需要删除子文档。下面的示例在 OnCommands 中只有一个项目,但那里可能有很多项目。我试过 find、findbyid、updatebyId、pull,一个接一个。通过子文档的 _id 和通用搜索进行了尝试最简单的运行没有做任何事情没有错误。

如果您能告诉我我做错了什么,我将非常感激,这是我代码的最后一部分不起作用。

示例数据:

> db.EntryPoints.find({_id: ObjectId("569e4fabf1e4464495ebf652")}).pretty()
{
"__v" : 0,
"_id" : ObjectId("569e4fabf1e4464495ebf652"),
"name" : "bbbb",
"offCommands" : [ ],
"onCommands" : [
{
"data" : "11111",
"operation" : "on",
"command" : "ISY-HTTPGet",
"_id" : ObjectId("569e4faff1e4464495ebf653")
}
]

型号:

var mongoose = require('mongoose');
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;

var onCommandsSchema = new Schema({
command: String
,operation: String
,data: String
})

var offCommandsSchema = new Schema({
command: String
,operation: String
,data: String
})

mongoose.model('onCommands', onCommandsSchema);
mongoose.model('offCommands', offCommandsSchema);

// create a schema
var EntryPointsSchema = new Schema({
name: String
,onCommands: [onCommandsSchema]
,offCommands: [offCommandsSchema]
,description: String
}, { collection: 'EntryPoints' });
mongoose.model('EntryPoints', EntryPointsSchema);


var EntryPoints = mongoose.model('EntryPoints');

module.exports = EntryPoints;

Node 邮政编码:

router.post('/webservices/removeCommand', function (req, res) {
var EntryPoints = require('../data_models/automate_entrypoints.js');

EntryPoints.update(
{ _id: ObjectId(req.body._id) }
, {
$pull: {
onCommands: { id_: req.body._id }
}
}
, function (err, ouput) { console.log("data:", numAffected) }
);

});

最佳答案

由于更新的查询部分,您的代码将无法工作:您希望匹配嵌入文档的 _id,而不是主文档。所以改成

var EntryPoints = require('../data_models/automate_entrypoints.js');

EntryPoints.update(
{ "onCommands._id": req.body._id },
{
"$pull": {
"onCommands": { "_id": req.body._id }
}
},
function (err, numAffected) { console.log("data:", numAffected) }
);

关于node.js - MongoDB/Mongoose $pull(删除)子文档不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34884991/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com