arrays - 使用 MLAB API 更新数组内容?

标签 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 来完成此操作。阅读文档并没有帮助我找到解决方案。

最佳答案

据我所知,没有一个查询可以在数组中更新插入文档。您可以在应用程序逻辑中实现此功能,也可以使用两个查询。有几种双查询解决方案。这是使用 $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 key 将提供对属于您 mLab 帐户的数据库内的所有数据的完全访问权限。因此,如果您将其在客户端应用程序中分发给不受信任的个人,他们就可以访问您的帐户和数据。如果您需要有关替代方案的建议,请随时发送电子邮件至 support@mlab.com。

关于arrays - 使用 MLAB API 更新数组内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48534891/

相关文章:

node.js - Node.js 的 Connect、Express 和 "middleware"是什么?

c - 如何检测作为参数传递的数组的大小?

sql - PostgreSQL json路径表达式以查找具有特定键的第一个数组元素

node.js - socket.io 在连接时加入多个房间

node.js - nodejs talib MACD

javascript - Ionic 2 和 JSON 数据添加

java - 如果数组是有序的,则递归 boolean 值

javascript - 尝试将对象数组转换为 JavaScript 对象

javascript - 在数组中的偶数之间插入连字符

json - 动态地将节点添加到 Bootstrap TreeView