0
我做了一個非常簡單的地圖/減少蒙戈控制檯。貓鼬「_id」消失在與地圖創建的集合/減少
var mapState = function() {
emit(this.state, 1);
};
var sumState = function (keyState, valuesCount) {
return Array.sum(valuesCount);
};
db.FooBar.mapReduce(
mapState,
sumState,
{out: "state_counts"}
);
var sc = {};
db.state_counts.find(
{_id: {$exists: true}}).forEach(
function(o){
sc[o._id]=o.value;
}
);
> sc
{
"ak" : 29,
"al" : 5832,
"ar" : 2798,
...
}
> db.state_counts.find().limit(3)
{ "_id" : "ak", "value" : 29 }
{ "_id" : "al", "value" : 5832 }
{ "_id" : "ar", "value" : 2798 }
到目前爲止好。我在「sc」對象中有預期的狀態縮寫和計數。當我試圖從state_counts中提取數據並將其轉換爲使用貓鼬的「sc」對象的等效物之前,就會出現奇數。
#!/usr/bin/env node
mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/thedb");
var schema = new mongoose.Schema({});
schema.collection = 'state_counts';
console.log(schema.collection);
var cur = mongoose.model(schema.collection, schema);
cur.find({}).exec(
function(err, data) {
if (err) {
console.log(err);
mongoose.disconnect();
}
console.log(data);
mongoose.disconnect();
}
);
$ ./test.js
state_counts
[ { value: 29 },
{value: 5832 },
{ value: 2798 },
...
]
這對我來說是令人驚訝的。爲什麼在使用貓鼬時,腳本中沒有顯示「_id」值?
是的。我期待出現對象_id的「默認」行爲。 – lysdexia