我有一个 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/