MongoDB使用索引删除元素输出数组

时间:2018-01-15 11:41:16

标签: javascript arrays node.js mongodb

我在mongodb集合中有一个数组,想要从索引中删除一个元素,没有找到如何制作它,或者是它的操作符...

文档示例:

    {
    "_id": "<someID>",
    "array": [
      {
        "elemt": 1
      },
      {
        "elemt": 2,
      },
      {
        "elemt": 2,
      }]
    }

(可能会发生重复 - 并且不想删除这些重复项)

我希望能够用它的索引删除一个元素......

使用:

  • NodeJS 8.9
  • Mongodb 3.4
  • (npm)mongodb(native)
  • Visual Studio 17

1 个答案:

答案 0 :(得分:0)

我有一个两步解决方案来实现你所描述的。

  1. 将数组的元素设置为null
  2. 从您的数组中查找null元素和$pull元素。

    db.collection.update({}, {$unset : {"array.2" : 1 }});
    db.collection.update({}, {$pull : {"array" : null }});
    

    您可以在查询中指定_id。您不能使用字符串模板在查询中指定索引。它会抛出错误“意外的模板字符串”。 您可以使用计算属性:

    var arrIndex = `array.${index}`;
    /* ... */
    db.collection.update({}, {$unset : {[arrIndex] : 1 }});
    
  3. 或只是将字符串文字包装在方括号[]中,如下所示:[array.${index}]