假设我有一些文档,在MongoDB中有这些信息:
{
text: "this is the first this is"
content: "this is this is"
total: 0
}
我想计算“text”中每个单词在“content”中出现多少次,将所有计数结果加起来并放入“total”字段。
在上面的示例中:
'this'在内容中出现两次,'is':2,'the':0,'first':0,'this':2,'is':2
总计:2 + 2 + 0 + 0 + 2 + 2 = 8 所以我们想在现场“总计”中加上8个我知道我应该通过迭代集合(让我们称之为'文档')来做到这一点:
db.documents.find().forEach(
function(result)
{
...
})
不确定要放入什么内容(我是新手,还是JS)
p.s:它应该是区分大小写的。
答案 0 :(得分:1)
好吧,看看JS + MongoDB教程。您需要访问MongoDB shell或MongoDB GUI(RoboMongo)才能执行。您可以创建新功能,根据您的规则计算内容字段中的文本,并将新字段添加到文档中。
String.prototype.total = function(content) {
var result = 0;
var contentArr = content.split(" ");
var textArr = this.split(" ");
for(var i = 0; i < textArr.length; i++) {
for(var j = 0; j < contentArr.length; j++) {
result += textArr[i] === contentArr[j] ? 1 : 0;
}
}
return result;
}
db.documents.find().forEach(function(doc){
doc["total"] = doc["text"].total(doc["content"]);
print(doc);
// Save again with total value
//db.documents.save(doc);
})
结果:
{
"_id" : ObjectId("569c0be30586bcb40f7d253a"),
"text" : "this is the first this is",
"content" : "this is this is",
"total" : 8
}