我有一个形式的JSON:
{
"array":[
{
"node1":"value1",
"node2":"value2"
},
{
"node1":"value1",
"node2":"value2"
}
]
}
现在我有一个前端GUI,我从那里收到需要插入数组的2个参数。
但是如果第一个参数value1
已经在数组中,那么我只需更新数据库中相应的value2
。
如果数组中不存在value1
,则在数组中插入新对象{"node1":"value1","node2":"value2"}
。
我需要使用mLAB API来做到这一点。阅读文档并没有帮助我提出解决方案。
答案 0 :(得分:0)
据我所知,单个查询无法在数组中插入文档。您可以在应用程序逻辑中实现此功能,也可以使用两个查询。有几种双查询解决方案。这是使用$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。