const OrderSchema = new Schema(
{
doctorId: { type : Schema.Types.ObjectId, ref: 'Users'},
patientId: { type : Schema.Types.ObjectId, ref: 'Users'},
orderTime: { type : String , default:''},
createdAt: { type : Date, default:Date.now },
approvedByDoctor:{ type :Boolean, default:false },
price:{type:Number,default:0}
},
);
并且有10个像这样的文件,我必须做什么查询以获得" orderTime"从每个文件?谢谢
答案 0 :(得分:2)
假设您的文档如下所示:
{
"_id" : ObjectId("578f73d17612ac41eb736641"),
"createdAt" : ISODate("2016-07-20T12:51:29.558Z")
}
{
"_id" : ObjectId("578f73e57612ac41eb736642"),
"createdAt" : ISODate("2016-07-20T12:51:49.701Z")
}
然后您可以生成包含createdAt日期数组的结果文档,如下所示:
{ "_id" : null, "creationDates" : [ ISODate("2016-07-20T12:51:29.558Z"), ISODate("2016-07-20T12:51:49.701Z") ] }
运行以下聚合查询:
db.<your_collection>.aggregate([{$group:{"_id":null,"creationDates":{$push:"$createdAt"}}}])
这将基本上对集合中的所有文档进行分组("_id":null
),并将createdAt字段中的值推送到数组("creationDates":{$push:"$createdAt"}
)
答案 1 :(得分:1)
使用聚合框架创建数组。基本上,您需要对所有文档进行分组,使用 $push
累加器运算符来创建列表。按照这个例子来获得要点:
Order.aggregate([
{
"$group": {
"_id": 0,
"orderTimes": { "$push": "$orderTime" }
}
}
]).exec(function(err, result) {
console.log(result[0].orderTimes);
});