我正在尝试将AP插入到网络阵列内特定网络内的APList阵列中。
我一直在尝试使用:
var ap = {
MAC : req.body.APMAC,
location : req.body.location
}
var query = {
name : req.decoded.name,
'networks.ssid' : req.body.ssid
}
User.update(query,
{$push: {'APList' : ap}},
{safe: true, upsert: true, new: true},
function(err, data) {
res.json({
success: true,
message: "Added AP"
})
})
req.decoded.name
来自JWT,发送的身体参数是APMAC,location& SSID。
这总是取得成功"增加了AP"消息,但尚未更新APList阵列以包括在POST请求中发送的AP。
答案 0 :(得分:0)
将$push
运算符与更新中的 $
positional operator 一起应用,将ap
对象添加到嵌入式APList
字段。
$
positional operator 将为您确定要更新的networks
数组中的正确元素,而不显式指定其在数组中的位置,因此您的最终更新语句应如下所示:
User.update(query,
{ "$push": { "networks.$.APList": ap } },
{ "upsert": true, "new": true },
function(err, data) {
res.json({
success: true,
message: "Added AP",
data: data
});
}
);