Node.js 如何结合使用upsert和$addToSet?

Node.js 如何结合使用upsert和$addToSet?,node.js,mongodb,Node.js,Mongodb,我想插入一个如下所示的文档: { name: "app1", theArray: [...unique string elements...] } 我尝试使用下面的查询执行upsert,但如果文档不存在,它会以某种方式在数组中创建一个数组。如果在文档不存在时使用$push,则可以很好地创建数组。但是,我需要使用$addToSet来维护数组元素的唯一性 当前查询: collection1.upsert({ name: "app1", },

我想插入一个如下所示的文档:

{
    name: "app1",
    theArray: [...unique string elements...]
}
我尝试使用下面的查询执行
upsert
,但如果文档不存在,它会以某种方式在数组中创建一个数组。如果在文档不存在时使用
$push
,则可以很好地创建数组。但是,我需要使用
$addToSet
来维护数组元素的唯一性

当前查询:

collection1.upsert({
            name: "app1",
        }, {
            $addToSet: {
                theArray: data // data is an array of ip addresses eg. ["1.1.1", "2.2.2.2"] which is not unique 
            }
        });
当数据库中没有现有文档时,执行上述查询将创建:

{
    name: "app-1",
    theArray: [
        //another array that contains the actual data.
    ]
}

有没有一种方法可以通过一个查询获得这种行为?

根据
addToSet
的定义,在您的情况下,您的
数据
本身被附加到一个列表中,使其成为list@BhavaniRavi-因此,我想我必须在执行addToSet之前确保数组存在。这意味着我至少需要两个问题,我得到了答案。我需要在$addToSet中使用$each。