使用 MLAB API 更新数组内容?

Updating array contents using MLAB APIs?

我有一个 JSON 形式:

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

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

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

我需要使用 mLAB API 执行此操作。阅读文档并没有帮助我想出解决方案。

据我所知,没有一个查询可以更新数组中的文档。您可以在您的应用程序逻辑中实现它,也可以使用两个查询。有几种双查询解决方案。这是使用 $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。