使用MLAB API更新数组内容?

时间:2018-01-31 05:14:06

标签: arrays json node.js api mlab

我有一个形式的JSON:

{
    "array":[
        {
            "node1":"value1",
            "node2":"value2"
        },
        {
            "node1":"value1",
            "node2":"value2"
        }
    ]
}

现在我有一个前端GUI,我从那里收到需要插入数组的2个参数。

但是如果第一个参数value1已经在数组中,那么我只需更新数据库中相应的value2。 如果数组中不存在value1,则在数组中插入新对象{"node1":"value1","node2":"value2"}

我需要使用mLAB API来做到这一点。阅读文档并没有帮助我提出解决方案。

1 个答案:

答案 0 :(得分:0)

据我所知,单个查询无法在数组中插入文档。您可以在应用程序逻辑中实现此功能,也可以使用两个查询。有几种双查询解决方案。这是使用$pull$push

的人
curl https://api.mlab.com/api/1/databases/<db>/collections/<collection>?apiKey=apiKey \
-X PUT \
-H 'Content-Type: application/json' \
-d '{"$pull": {"array": {"node1": "value1"}}}'

curl https://api.mlab.com/api/1/databases/<db>/collections/<collection>?apiKey=apiKey \
-X PUT \
-H 'Content-Type: application/json' \
-d '{"$push": {"array": {"node1": "value1", "node2": "value2"}}}'

这用于更新node1"value1"的对象,或者如果它不存在则将其添加到数组中。这取决于具有node1属性的唯一值。

提醒词:mLab强烈建议使用其中一个MongoDB驱动程序连接到您的数据库而不是数据API。您的API密钥将完全访问属于您的mLab帐户的数据库中的所有数据。因此,如果您将其在客户端应用程序中分发给不受信任的个人,他们就可以访问您的帐户和您的数据。如果您需要有关替代品的建议,请随时发送电子邮件至support@mlab.com。