我有这些猫鼬模式:
var Thread = new Schema({
title: String, messages: [Message]
});
var Message = new Schema({
date_added: Date, author: String, text: String
});
如何返回所有带有最新消息子文档(限制1)的线程?
目前,我正在Thread.find()
服务器端过滤结果,但aggregate()
出于性能考虑,我想在MongoDb中移动此操作。
您可以使用$unwind
,,$sort
并$group
使用类似以下方式进行操作:
Thread.aggregate([
// Duplicate the docs, one per messages element.
{$unwind: '$messages'},
// Sort the pipeline to bring the most recent message to the front
{$sort: {'messages.date_added': -1}},
// Group by _id+title, taking the first (most recent) message per group
{$group: {
_id: { _id: '$_id', title: '$title' },
message: {$first: '$messages'}
}},
// Reshape the document back into the original style
{$project: {_id: '$_id._id', title: '$_id.title', message: 1}}
]);
假设我有以下JSON结构,我希望按性别分组,并希望在同一字段中返回多个文档值: 现在我知道我可以做这样的事情,但是我需要把年龄和名字合并到一个字段中。
问题内容: 我想获取更新的文档。这是我的原始代码,它成功更新但没有返回文档。 我使用了toArray函数,但是这给出了错误“没有提供的回调就不能使用writeConcern”: 有任何想法吗? 问题答案: 只会向自己的回调报告受影响的文档数。 要在修改时检索文档,可以改用(以前称为)。 更新:在mongoDB中执行时,请使用;如果使用mongoose,则可以使用。以上是Node.js驱动程序。 注
我有两个集合A和B,我在另一个集合B中有一个字段的引用,因此将两个结果聚合到: 集合A中的文件是:
我在尝试使用MongooseJs在Mongodb中按嵌套数组排序时遇到了一个小问题。 a)一个产品包含任务,每个任务都有子任务。 b)任务有顺序 这是一个示例产品文档: 结果: } 我正在使用MongoDB聚合管道来订购任务 结果: } 预期结果: 我真的很接近了,所有的排序似乎都在工作。我只需要一些帮助来将子任务放回父母体内。非常感谢任何帮助。 谢谢
我试图使用MongoDb列出展开嵌套数组。 一个产品包含任务,每个任务可以有零个、一个或多个子任务。 以下是产品文档示例: 结果: 聚合管道在对任务进行排序方面起到了很大的作用 有时任务没有子任务,例如: 当他们没有孩子的时候,还有什么可以帮助他们完成任务吗? 当前聚合: 期望的结果:
我有一个名为results的集合,其中每个文档都有一个标记(唯一)和一个嵌入文档(服务)列表。 样本: 我想使用mongo模板(spring boot)提取一个基于令牌和服务id的服务。下面是一个代码片段: 服务级别: 上面的代码执行此查询: 方法返回空Service对象! 为了获得服务对象,我的聚合中是否有任何更改要做?