Javascript 如何删除mongodb中的深层数组?
我正在尝试删除以下文档中的“virtualNumber”:“12345”:Javascript 如何删除mongodb中的深层数组?,javascript,mongodb,Javascript,Mongodb,我正在尝试删除以下文档中的“virtualNumber”:“12345”: { "_id" : ObjectId("50a9db5bdc7a04df06000005"), "billingInfo" : null, "date" : "dsfdsfsdfsd", "description" : "sdfsdff", "pbx" : { "_id" : ObjectId("50a9db5bdc7a04df06000006"), "did" : { "1234567890" : {
{
"_id" : ObjectId("50a9db5bdc7a04df06000005"),
"billingInfo" : null,
"date" : "dsfdsfsdfsd",
"description" : "sdfsdff",
"pbx" : {
"_id" : ObjectId("50a9db5bdc7a04df06000006"),
"did" : {
"1234567890" : {
"inventoryId" : "509df7547e84b25e18000001",
"didcountry" : "india",
"didState" : "bangalore",
"routeType" : "CallForward",
"didNumber" : "1234567890",
"didVirtualNumbers" : [
{
"virtualNumber" : "12345"
},
{
"virtualNumber" : "56789"
}
],
"id" : ObjectId("50a9db9acdfb4f9217000002")
}
},
},
我使用的是node.js,所以我用JavaScript构建了一个查询:
var query = {_id: ObjectId("50a9db5bdc7a04df06000005")};
var obj = {};
obj["pbx.did.1234567890.didVirtualNumbers.virtualNumber"]=12345;
//problem
collection.update(query,{$pull:obj});
请参阅
它提到pull字段应该是一个数组。您需要匹配数组元素,如:
{"$pull": {"pbx.did.7259591220.didVirtualNumbers": {"virtualNumber": "12345"}}}
因此,您应该将代码更改为:
obj["pbx.did.7259591220.didVirtualNumbers"]={"virtualNumber": "12345"};
谢谢,但它不起作用,查询是{'$pull':{'pbx.did.7259591220.didVirtualNumbers':{virtualNumber:'12345'}}}当我将您问题中的文档保存到数据库中的“objects”集合中时,我可以删除virtualnumbers“12345”从使用query
db.objects.update({“\u id”:ObjectId(“50a9db5bdc7a04df0600005”)},{“$pull”:{“pbx.did.7259591220.didVirtualNumbers”:{“virtualNumber”:“12345”}}}的文档中
。此查询后,文档仅包含另一个virtualNumber“56789”。您是要在Mongo控制台中运行此操作,还是作为应用程序的一部分运行此操作?您是否收到任何错误消息?您的代码在db.collection调用中,对吗?你有没有仔细检查过你有收藏名称等,对吗?哦,天哪,收藏名称中的拼写错误..非常抱歉给你带来麻烦,非常感谢它工作正常。。。