Alo*_*lon 5 mongoose mongodb node.js
我的文档中有数组,我尝试接收该数组的最后一个元素。
我的代码是:
Post.find({_id:postId},{'comments':{'$slice':-1}});
Run Code Online (Sandbox Code Playgroud)
这给了我所有的对象,但注释数组仅包含最后一个元素。
另一方面,
Post.find({_id:postId},{'comments':1});
Run Code Online (Sandbox Code Playgroud)
只给我评论。
我不知道如何将这两个命令组合在一起。怎样才能做到呢?
{
"users":[],
"comments":["string1","string2","string3"],
"lastValue":"Wow"
"name":"jow"
"_id": {
"$oid": "5747d6bdecfae9d0560077cc"
},
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我希望这有帮助。
db.Post.find(
{ _id: postId },
{ comments: { $slice: -1 }, _id: 0, users: 0, lastValue: 0, name: 0 },
);
Run Code Online (Sandbox Code Playgroud)
您可能想像这样使用 mongodb(版本 3.2)聚合$slice :
Post.aggregate([
{
$match: {
'_id.$oid': postId
}
},
{
$project: {
comments: {
$slice: [ "$comments", -1 ]
}
}
}
]);
Run Code Online (Sandbox Code Playgroud)
在早期版本的 mongodb 中:
Post.aggregate([
{
$match: {
'_id.$oid': postId
}
},
{
$unwind: "$comments"
},
{
$group : {
_id: "$_id.$oid",
comment: { $last: "$comments" }
}
}
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10345 次 |
| 最近记录: |