0
我在我的mongo集合中有以下数据。使用聚合框架将SQL查询转换为mongo
db.tempTest.insert([{
"id" : "12345",
createdOn : ISODate("2016-09-15T19:25:00.000Z"),
"addr" : "address1",
"book" : "book1"
}, {
"id" : "12345",
createdOn : ISODate("2016-09-14T19:25:00.000Z"),
"addr" : "address2",
"book" : "book2"
}, {
"id" : "12346",
createdOn : ISODate("2016-09-15T19:26:00.000Z"),
"addr" : "address3",
"book" : "book3"
}, {
"id" : "12346",
createdOn : ISODate("2016-09-15T19:26:01.000Z"),
"addr" : "address4",
"book" : "book4"
}, {
"id" : "12346",
createdOn : ISODate("2016-09-14T19:26:01.000Z"),
"addr" : "address5",
"book" : "book5"
}, {
"id" : "12347",
createdOn : ISODate("2016-09-14T19:26:01.000Z"),
"addr" : "address6",
"book" : "book6"
}, {
"id" : "12347",
createdOn : ISODate("2016-09-10T19:26:01.000Z"),
"addr" : "address7",
"book" : "book7"
}, {
"id" : "12345",
createdOn : ISODate("2016-09-14T19:25:00.000Z"),
"addr" : "address8",
"book" : "book8"
}]);
查询相应的Postgres到SQL将如下:
SELECT *
FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY idnew ORDER BY createdOn ASC) AS rownumber,
*
FROM temp) AS TEMP
WHERE
rownumber = 1
AND idnew IN ('12345', '12346', '12347')
ORDER BY
createdOn ASC
我是新来蒙戈分贝。我通过了聚合框架并能够使用$匹配,但无法使用$ group从idnew组中获取最少createdOn的文档。我需要所有符合条件的文件字段。 请帮忙构建mongo shell的查询。
结果集应如下:
{
"id" : "12347",
createdOn : ISODate("2016-09-10T19:26:01.000Z"),
"addr" : "address7",
"book" : "book7"
}, {
"id" : "12345",
createdOn : ISODate("2016-09-14T19:25:00.000Z"),
"addr" : "address8",
"book" : "book8"
}, {
"id" : "12346",
createdOn : ISODate("2016-09-14T19:26:01.000Z"),
"addr" : "address5",
"book" : "book5"
}
随着大量的搜索和试验,我可以设法提取数据 但是当使用$ arrayElemAt函数格式得到改变。以下共享 查询。 请帮我将此输出转换为上面共享的输出。
db.tempTest.aggregate(
[
{$sort : {createdOn:1}},
{ $group : { _id : "$id", details: { $push: "$$ROOT" } } },
{$project:
{
details: { $arrayElemAt: [ "$details", 0 ] }
}
}
]
)
截至目前,输出显示为:
/* 1 */
{
"_id" : "12347",
"details" : {
"_id" : ObjectId("57dc1b094c105db1a666b0a8"),
"id" : "12347",
"createdOn" : ISODate("2016-09-10T19:26:01.000Z"),
"addr" : "address7",
"book" : "book7"
}
}
/* 2 */
{
"_id" : "12345",
"details" : {
"_id" : ObjectId("57dc1b094c105db1a666b0a3"),
"id" : "12345",
"createdOn" : ISODate("2016-09-14T19:25:00.000Z"),
"addr" : "address2",
"book" : "book2"
}
}
/* 3 */
{
"_id" : "12346",
"details" : {
"_id" : ObjectId("57dc1b094c105db1a666b0a6"),
"id" : "12346",
"createdOn" : ISODate("2016-09-14T19:26:01.000Z"),
"addr" : "address5",
"book" : "book5"
}
}