Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除mongodb中的深层数组?_Javascript_Mongodb - Fatal编程技术网

Javascript 如何删除mongodb中的深层数组?

Javascript 如何删除mongodb中的深层数组?,javascript,mongodb,Javascript,Mongodb,我正在尝试删除以下文档中的“virtualNumber”:“12345”: { "_id" : ObjectId("50a9db5bdc7a04df06000005"), "billingInfo" : null, "date" : "dsfdsfsdfsd", "description" : "sdfsdff", "pbx" : { "_id" : ObjectId("50a9db5bdc7a04df06000006"), "did" : { "1234567890" : {

我正在尝试删除以下文档中的“virtualNumber”:“12345”:

{
"_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调用中,对吗?你有没有仔细检查过你有收藏名称等,对吗?哦,天哪,收藏名称中的拼写错误..非常抱歉给你带来麻烦,非常感谢它工作正常。。。