通过ID查找文档并在Mongoose中过滤子数组

罗慕洛·安德拉德(RômuloAndrade)

大家!几天以来,我一直在寻找解决我的问题的方法,经过多次失败的尝试,我决定在这里提出我的第一个问题。

所以,我有一个像这样的模型:

const Exercise = new Schema (
    {
        description: String,
        duration: Number,
        date: Date
    },
    {
        _id: false
    }
);

const User = new Schema({
    username: String,
    log: [
        Exercise
    ]
});

我想找到一个特定的用户,并在日期范围内过滤他/她的运动日志。如果范围内没有任何练习,我只想将id,用户名和日志作为一个空数组返回。所以,我建立了这个查询:

User.aggregate([
        {
            $match: {
                _id: userIdInput
            }
        },
        {
            $project: {
                _id: 1,
                username: 1,
                log: { 
                    $filter: { 
                        input: "$log", 
                        as: "log", 
                        cond: { 
                            $gte: [ "$$log.date", from ]
                        } 
                    } 
                }
            }
        }])
        .exec()
        .then((log) => {
            res.json(log);
        })
        .catch(err => {
            next(err);
        });
       
}

但是此查询始终返回一个空数组。我在做任何错误或以更好的方式编写此查询的提示吗?

我非常感谢您的帮助。

罗慕洛·安德拉德(RômuloAndrade)

原来的问题是,当我们aggregate()在猫鼬中使用时,必须手动将id字符串强制转换为ObjectId类型,因为它不会像find()例如那样自动执行

资源:Moongoose聚合$ match与ID的不匹配

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Mongoose / MongoDB中的子文档,数组,文档中过滤数组

Mongoose 如何通过 id 数组查找并拉出其特定的子文档?

Pymongo在子文档中通过_id查找

如何通过子文档数组中的数据查找文档

在 Mongoose 中过滤子文档数组并仅返回匹配的元素

根据id数组字段在Mongoose中查找文档

在嵌套对象的数组字段中按ID查找子文档

在子文档数组字段中过滤数组

在 mondogb 中通过 id 查找嵌套在文档中的子文档

使用Mongoose更新数组中的子文档

更新子文档中的数组-mongoose mongodb

mongoose - 查询子文档中的数组值

Mongoose 在聚合期间通过其动态键过滤子文档

如何通过Criteria + Mongoose / MongoDB查找子文档

猫鼬通过子文档的_id查找文档

mongoose 查找带有 id、CoreMongooseArray 与 DocumentArray 的子文档

mongodb / mongoose findMany-查找ID在数组中列出的所有文档

无法将子文档推送到Mongoose中的文档数组

mongodb 从 id 数组中过滤文档

Mongoose 查找与 id 数组的每个条目匹配的所有文档

MongoDB 通过缺少字段聚合过滤子文档数组

Java通过CSV过滤并在数据中查找间隙

MongoDB:如何通过嵌套文档中的ID查找文档

如果Mongoose数组中包含元素,则查找Mongodb文档

在 ID 数组中包含 ID 的 Mongoose 查询文档

如何通过其子数组中的项目的 ID 获取 firestore 文档

Mongoose 在预查找查询中过滤嵌套数组

在Mongoose中更新子文档数组而不获取父对象

在mongoose中查询子文档的子文档