MongoDB update$pull运算符未从数组中删除项
我在MongoDB有一个收藏。 并希望从数组中删除项 我的“用户”集合是一个对象数组 当我打字时:MongoDB update$pull运算符未从数组中删除项,mongodb,Mongodb,我在MongoDB有一个收藏。 并希望从数组中删除项 我的“用户”集合是一个对象数组 当我打字时: db.users.find({"tasks.task_id" : "h58sjIdj3jJZ"}).pretty() 在mongo shell中,我得到以下结果: { "_id" : ObjectId("5955b45b7a4bf40544019359"), "profile" : { "name" : "Morning bay", "email" : "morbay23
db.users.find({"tasks.task_id" : "h58sjIdj3jJZ"}).pretty()
在mongo shell中,我得到以下结果:
{
"_id" : ObjectId("5955b45b7a4bf40544019359"),
"profile" : {
"name" : "Morning bay",
"email" : "morbay232@google.su",
"phone" : "+1-641-155-88-84",
"description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit"
},
"tasks" : [
{
"task_id" : "h58sjIdj3jJY",
"time" : "11:15 AM",
"date" : "07/01/2017",
"description" : "Make 1st call to John White"
},
{
"task_id" : "h58sjIdj3jJZ",
"time" : "14:30 PM",
"date" : "07/09/2017",
"description" : "Send certificate and make Another call to J.White"
}
],
"progress" : [
{
"isActive" : "",
"description" : ""
}
]
}
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
所以,我收藏的每一件物品都是这样的。
没关系
但现在我想从“任务”数组中的一个用户项目中删除一个项目
I类型:
db.users.update({}, {$pull : {"tasks" : {"task_id" : "h58sjIdj3jJZ"}}});
要获得此结果,请执行以下操作:
{
"_id" : ObjectId("5955b45b7a4bf40544019359"),
"profile" : {
"name" : "Morning bay",
"email" : "morbay232@google.su",
"phone" : "+1-641-155-88-84",
"description" : "Lorem ipsum dolor sit amet, consectetur adipisicing elit"
},
"tasks" : [
{
"task_id" : "h58sjIdj3jJY",
"time" : "11:15 AM",
"date" : "07/01/2017",
"description" : "Make 1st call to John White"
},
{
"task_id" : "h58sjIdj3jJZ",
"time" : "14:30 PM",
"date" : "07/09/2017",
"description" : "Send certificate and make Another call to J.White"
}
],
"progress" : [
{
"isActive" : "",
"description" : ""
}
]
}
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
我阅读了文档,其中的示例看起来很相似,所以我不知道哪里有错误。我在MongoDB终端上在线测试了它,您的查询正确地提取了文档 这是你的电话号码
您是否在shell或使用ODM(如Mongoose)时遇到此问题?我在MongoDB终端上在线测试了它,您的查询正确地提取了文档 这是你的电话号码
您是否在shell或使用ODM(如Mongoose)时遇到此问题?您在更新搜索查询中使用
{}
默认的意思是查找任何文档
,然后您正在修改其任务列表{$pull:{“tasks”:{“task_id:“h5sjidj3jz”}
因此,可能正在修改另一个文档(该文档可能包含id为h58sjIdj3jJZ的任务,也可能不包含id为H58SJIDJ3JZ的任务,但在这种情况下,它是否包含该任务并不重要)
您有两种选择:
使用:
db.users.update({},{$pull:{“tasks”:{“task_id”:“h58sjIdj3jJZ”}},{multi:true})代码>
最终涉及数据库中每个文档的内容
或
使搜索查询更具体(在任务中提供id或查找任务id为的项)
db.users.update({“tasks.task_id”:“h58sjidj3jz”},{$pull:{“tasks”:“task_id”:“h58sjidj3jz”}})
您在更新搜索查询中使用{}
默认的意思是查找任何文档
,然后您正在修改其任务列表{$pull:{“tasks”:{“task_id”:“h58sjidj3jz”}
因此,可能正在修改另一个文档(该文档可能包含id为h58sjIdj3jJZ的任务,也可能不包含id为H58SJIDJ3JZ的任务,但在这种情况下,它是否包含该任务并不重要)
您有两种选择:
使用:
db.users.update({},{$pull:{“tasks”:{“task_id”:“h58sjIdj3jJZ”}},{multi:true})代码>
最终涉及数据库中每个文档的内容
或
使搜索查询更具体(在任务中提供id或查找任务id为的项)
db.users.update({“tasks.task_id”:“h58sjidj3jz”},{$pull:{“tasks”:“task_id”:“h58sjidj3jz”}})代码>它应该可以工作。您的mongodb版本是什么?能否添加{multi:true}作为更新的第三个参数db.users.update({},{$pull:{“tasks”:{“task_id”:“h58sjIdj3jJZ”}},{multi:true})代码>已经尝试过了,但是没有帮助。它应该可以工作。您的mongodb版本是什么?能否添加{multi:true}作为更新的第三个参数db.users.update({},{$pull:{“tasks”:{“task_id”:“h58sjIdj3jJZ”}},{multi:true})
已经尝试过了,但是它没有帮助我使用MongoJS而不是Mongoose。是的,也有同样的问题。它不会从任务数组中删除项目。我使用MongoJS而不是Mongoose。是的,也有同样的问题。它不会从任务数组中删除项目。是!我使用了db.users.update({“tasks.task_id”:“h58sjIdj3jJZ”},{$pull:{“tasks”:{“task_id”:“h58sjidj3jz”}}})
,这很有帮助!非常感谢。对我使用了db.users.update({“tasks.task_id”:“h58sjIdj3jJZ”},{$pull:{“tasks”:{“task_id”:“h58sjidj3jz”}}})
,这很有帮助!非常感谢。