var map = function() {
var values = {d_sno : this.d_sno, type : this.type};
emit(this._id, values);
};
在上面的map函数中,我将(key,value)
对分配给varchar并发出该varchar。我想发出整个文档而不将(key,value)
对分配给varchar。
答案 0 :(得分:3)
您可以像这样发出整个文档:
var map = function() {
emit(this._id, this);
};
通过将整个文档作为值发出,发出的文档将如下所示:
{
"_id" : ObjectId("53a6bd394aaee8df24b45dc5"),
"value" : {
"_id" : ObjectId("53a6bd394aaee8df24b45dc5"),
"d_sno" : "foo",
"type" : "bar",
/* ... other fields */
}
}
这种方法的问题在于您将在值和键中包含文档的_id(因为您将_id作为键发出)。
要摆脱发射值中的_id,您可以使用此方法:
var map = function() {
var key = this._id;
var value = this;
delete value._id;
emit(key, value);
};
但是在发出整个文档时应该小心,因为单个发射只能容纳MongoDB的最大BSON文档大小的一半(目前是16 MB)。