Mongodb Mongoose aggregate:如何获取未填充列的所有文档?

Mongodb Mongoose aggregate:如何获取未填充列的所有文档?,mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,这是我的猫鼬模式: var userSchema = new mongoose.Schema({ userID: String, gender: String, dateCreated: { type: Date, default: Date.now } }) 这是我的问题 userSchema.statics.getUser = function(callback){ this.aggregate() .exec(function(err, result){

这是我的猫鼬模式:

var userSchema = new mongoose.Schema({
  userID: String,
  gender: String,
  dateCreated: { type: Date, default: Date.now }
})
这是我的问题

userSchema.statics.getUser = function(callback){
  this.aggregate()
    .exec(function(err, result){
      callback(result);
    });
}

有些用户在创建时可能没有添加性别,如何使用未填充性别属性的聚合来提取所有文档?

您不需要为此添加聚合。只需一个常规的旧查询即可

User.find({gender: {$exists: false}}, function (error, users) {/*...*/}};

结果实际上是语言不可知的,所以一个简单的mongo shell就足够了。 结果可以简单地通过查找获得:

考虑:

> db.user.find().pretty()
{
    "_id" : ObjectId("52ecf6b46a8b205baeb2cc58"),
    "user" : "neil",
    "gender" : "M"
}
{ "_id" : ObjectId("52ecf6c66a8b205baeb2cc59"), "user" : "fabio" }
{
    "_id" : ObjectId("52ecf77c6a8b205baeb2cc5a"),
    "user" : "markus",
    "gender" : "M",
    "preference" : "any"
}
这在以下情况下效果良好:

> db.user.find({ preference: null }).pretty()
{
    "_id" : ObjectId("52ecf6b46a8b205baeb2cc58"),
    "user" : "neil",
    "gender" : "M"
}
{ "_id" : ObjectId("52ecf6c66a8b205baeb2cc59"), "user" : "fabio" }
还有,$match合计:

> db.user.aggregate([{$match: { prefernce: null }}])
{
    "result" : [
            {
                    "_id" : ObjectId("52ecf6b46a8b205baeb2cc58"),
                    "user" : "neil",
                    "gender" : "M"
            },
            {
                    "_id" : ObjectId("52ecf6c66a8b205baeb2cc59"),
                    "user" : "fabio"
            },
            {
                    "_id" : ObjectId("52ecf77c6a8b205baeb2cc5a"),
                    "user" : "markus",
                    "gender" : "M",
                    "preference" : "any"
            }
    ],
    "ok" : 1
}

查看MongoDB文档中的更多信息。

我需要聚合,因为我要做项目和组。