我有一个这样的模型:
User:
{
name: "test",
phone: "1234567890",
password: "test",
email: "test@tester.com",
tasks: {
{ task: "do this", timestamp: "2015-08-01" },
{ task: "then this", timestamp: "2015-08-05" },
{ task: "finally this", timestamp: "2015-08-07" }
}
},
... (more users) ...
如何获取特定用户的详细信息,如姓名,电子邮件以及最新的1个任务?
User.find({phone: '1234567890', password: 'test'}, '_id name email tasks', function(err, user) {
if (err)
res.json({result: false});
res.json({result: !(user == null), object: user});
});
这将返回所有任务。
答案 0 :(得分:0)
如果您通过数组的推送方法插入新任务。那么你可以通过获取任务数组的长度并按长度访问最后一条记录来获得最后一条记录 -
或者您可以参考: return document with latest subdocument only in mongodb aggregate
答案 1 :(得分:0)
您可以使用$slice (projection)
User.find({
phone: '1234567890',
password: 'test'
}, {
name: 1,
email: 1,
tasks: {$slice: -1}
}, function (err, user) {
if (err) {
res.json({result: false});
return;
}
return res.json({result: !(user == null), object: user});
});
注意 tasks
应该是Array
而不是Object
。