|
我们看到这不是我们想要的结果,group将“tomato” 和“Tomato”作为两个组来对待!通过在group函数中使用键“$keyf” 代替键“key” 来指定分组依赖的键,会解决这个问题,使用方位为:- > db.vegetableprice.find();
- { "_id" : ObjectId("50273c44e02ab93d5c5be7a1"), "name" : "tomato", "price" : 3.5, "time" : ISODate("2012-08-12T05:16:52.106Z") }
- { "_id" : ObjectId("50273c4ce02ab93d5c5be7a2"), "name" : "Tomato", "price" : 3.5, "time" : ISODate("2012-08-12T05:17:00.686Z") }
- > db.runCommand({"group" : {
- ... "ns" : "vegetableprice",
- ... "$keyf" : function(doc){return {"name" : doc.name.toLowerCase()};},
- ... "initial" : {"time" : 0},
- ... "$reduce" : function(doc, prev){
- ... if(doc.time > prev.time){
- ... prev.time = doc.time;
- ... prev.price = doc.price;
- ... }
- ... }
- ... }});
- {
- "retval" : [
- {
- "name" : "tomato",
- "time" : ISODate("2012-08-12T05:17:00.686Z"),
- "price" : 3.5
- }
- ],
- "count" : 2,
- "keys" : 1,
- "ok" : 1
- }
- >
复制代码 |
|