【问题标题】:Updating array contents using MLAB APIs?使用 MLAB API 更新数组内容?
【发布时间】:2018-07-10 03:12:32
【问题描述】:

我有一个 JSON 格式:

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

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

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

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

【问题讨论】:

    标签: arrays json node.js api mlab


    【解决方案1】:

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

    【讨论】:

    • 谢谢@tfogo。这解决了我的问题!
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多