相对简单的场景:

我有一个Voucher对象,它有一个user属性(类型ObjectId).我想获得单个用户的所有凭证值之和.下面是我当前的策略,它返回一个空数组:

Voucher.aggregate [
    { $match : { user : new ObjectId(user_id), expires : { $gt : new Date() } } }
    { $group : { _id : null, sum : { $sum : '$value' } } }
], (err, result)->

    console.log err
    console.log result

删除user id的匹配项并保留expires字段将返回结果.所以问题就变成了user米比赛有什么问题了?

推荐答案

事实证明,ObjectId的铸造似乎是一个问题.它是使用模式类型Object Id mongoose.Schema.Types.ObjectId进行强制转换的,而它需要的只是一个纯ObjectId mongoose.Types.ObjectId.

Mongodb相关问答推荐

在MongoDB中是否可以按递增顺序更新多个文档?

MongoDB:如何通过增量向量递增整数向量

Mongo Aggregate管道-另一个集合中的多个查找

将子元素的数组值提取到 mongodb 中的单个数组中?

将数据从一个集合插入另一个集合的聚合

MongoDB C# 驱动程序 2.0 InsertManyAsync 与 BulkWriteAsync

Spring Boot MongoDB 连接问题

为什么mongodb的文档中存储键名

GeoJSON 和 MongoDB:将点存储为 GeoJSON.Point 是否值得?

Mongodb:查询嵌套在数组中的json对象

Java MongoDB/BSON 类混淆

如何在我的Meteor 应用程序数据库中使用 mongoimport?

MongoDB 在 mongoengine 中使用 OR 子句

了解 Mongoose 中的关系和外键

Mongodb错误:The positional operator did not find the match needed from the query

如何在第一个文档中恢复 MongoDB ChangeStream 而不仅仅是在我开始收听后更改

在 mongoose 中使用 UUID 进行 ObjectID 引用

MongoDB Compass timeouts超时

与 mongoose/node.js 共享数据库连接参数的最佳方式

如何从集合中删除除 MongoDB 中的文档之外的所有文档