【发布时间】:2020-01-17 22:45:51
【问题描述】:
这是我的收藏“个人资料”的架构:
{
_id : ObjectId("2bb0fad110"),
name : "Tommy",
defaultrates :
[
{_id : ObjectId("444cbcfd52"), rate : 35.0, raisedOn : "5/2/2009"},
{_id : ObjectId("2e642b1510"), rate : 55.0, raisedOn : "5/3/2010"},
{_id : ObjectId("47cc4d69d3"), rate : 65.0, raisedOn : "5/5/2010"}
]
}
我想 $push 一个嵌入式数组:
{
_id : new ObjectID(), rate : 60.0, raisedOn : "7/5/2012"
}
并在执行后返回。
所以我通过猫鼬做了这个,
var condition = { '_id': "2bb0fad110"},
insert = {
'_id': new ObjectID(),
'rate': 60.0,
'raisedOn': "7/5/2012",
},
options = { strict: false, new: true };
function callback (err, result) {
if (err) { console.log(err); res.status(400).send("error"); }
console.log('result:' + JSON.stringify(result));
res.json(result);
}
dbmodel.findOneAndUpdate(condition, { $push: { defaultrates: insert } }, options, callback);
返回值(即整个对象)是:
{
_id : ObjectId("2bb0fad110"),
name : "Tommy",
defaultrates :
[
{_id : ObjectId("444cbcfd52"), rate : 35.0, raisedOn : "5/2/2009"},
{_id : ObjectId("2e642b1510"), rate : 55.0, raisedOn : "5/3/2010"},
{_id : ObjectId("47cc4d69d3"), rate : 65.0, raisedOn : "5/5/2010"},
{_id : ObjectId("65009be546"), rate : 60.0, raisedOn : "7/5/2012"}
]
}
但我的目标是只返回值:
{_id : ObjectId("65009be546"), rate : 60.0, raisedOn : "7/5/2012"}
而不是整个文档。
我该怎么做? 我在这一行中错过了什么:
dbmodel.findOneAndUpdate(condition, { $push: { defaultrates: insert } }, options, callback);
【问题讨论】:
-
您返回的整个文档带有
res.json(result)。如果您只想要新插入的对象,则应该返回insert值。 -
那么,我的语法应该是什么?
标签: javascript node.js mongoose