这是我的猫鼬模式:
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);
});
}
某些用户在创建时可能没有添加性别,如何使用未填充属性性别的聚合来提取所有文档?
答案 0 :(得分:2)
结果实际上与语言无关,所以一个简单的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文档中的Aggregation以获取更多信息。
答案 1 :(得分:0)
您不需要聚合。只需常规的旧查询即可。
User.find({gender: {$exists: false}}, function (error, users) {/*...*/}};