我有書和作者collection.in這個名字和works_written是分別相同的值列。所以我試了下面的腳本,但它只發出第一個地圖值,第二個地圖值不發射。mongo需要使用標識列加入兩個集合,並從兩個集合中發出需要的列
book = function() {
emit(this.id, {name: this.name,editions:this.editions});
}
author = function() {
emit(this.id, {name:this.name,works_written: this.works_writtten,});
}
r_b = function(k, values) {
var result = {};
values.forEach(function(value) {
var name;
for (name in value) {
if (value.hasOwnProperty(name)) {
result[name] = value[name];
}
}
});
return result;
};
r_a = function(k, values) {
var result = {};
values.forEach(function(value) {
var works_written;
for (works_written in value) {
if (value.hasOwnProperty(works_written)) {
result[works_written] = value[works_written];
}
}
});
return result;
};
res = db.book.mapReduce(book, r_ja, {out: {reduce: 'joined'}})
res = db.author.mapReduce(author, r_jp, {out: {reduce: 'joined'}})
有人可以幫我嗎?
加入works.but我逗號分隔值在works_written.how我可以這樣做。 – Rudra
我用來計算的分割函數是:map = function(){ if(this.works_written!= null) { var array = this.works_written.split(','); emit(this.works_written,array.length);} } reduce = function(key,values){ return values [0]; } 結果= db.runCommand({ 「MapReduce的」: 「作者」, 「地圖」:映射, 「減少」:減少, 「出」: 「split_result」 }); – Rudra