我有收集哪些文檔,如:文件返回最後一個 「真」 值的每個組
{
_id: ObjectId(),
user: ObjectId(),
studentName: String,
createdAt: Date,
isAbondoned: boolean
}
例子是:
1-
{
"_id" : ObjectId("56cd2d36a489a5b875902f0e"),
"user" : ObjectId("56c4cafabd5f92cd78ae49d4"),
"studentName" : "Aman",
"createdAt" : ISODate("2016-02-24T04:10:30.486+0000"),
"isAbandoned" : true
}
2 -
{
"_id" : ObjectId("56cd2dcda489a5b875902fcd"),
"user" : ObjectId("56c4cafabd5f92cd78ae49d4"),
"studentName" : "Aman",
"createdAt" : ISODate("2016-02-24T04:13:01.932+0000"),
"isAbandoned" : false
}
3-
{
"_id" : ObjectId("56cee51503b7cb7b0eda9c4c"),
"user" : ObjectId("56c85244bd5f92cd78ae4bc1"),
"studentName" : "Rajeev",
"createdAt" : ISODate("2016-02-25T11:27:17.281+0000"),
"isAbandoned" : true,
}
現在我想找到學生的名單,他們的「isAbandoned」是他們最後的「createdAt」文件真實。
對於上面的例子中需要的輸出是:
{
"user" : ObjectId("56c85244bd5f92cd78ae4bc1"),
"studentName" : "Rajeev"
}
因爲studentName「阿曼」最大(createdAt)是第二文檔和「isAbandoned」是該假。
這工作,但確實非常沒有效率的,你真的不需要去通過所有這個麻煩。 – styvane
如果OP使用的是舊的MongoDB版本,因爲'$ filter'是3.2版中的新版本 – styvane
@ user3100115 - db版本沒有指定:-),所以你的代碼將失敗,所以我的假設,btw很好的清潔解決方案! – profesor79