使用 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。
我有一个 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。