gpt4 book ai didi

mongodb map 从子文档发出键

转载 作者:可可西里 更新时间:2023-11-01 10:06:47 28 4
gpt4 key购买 nike

我有一个包含子文档的文档:

{
"_id" : ObjectId("XXXXX"),
"SearchKey" : "1234",
"SearchTerms" : {
"STA" : ["1"],
"STB" : ["asdfasdf"],
"STC" : ["another"]
}
}

SearchTerm 元素不是固定的 - 例如,有时我们会有没有 STC 的 STA。

我能做到:

var map = function() {
for (key in this.SearchTerms)
{
emit(key, 1);
}
}

但我不能这样做:

var map = function() {
for (var i=0; i< this.SearchTerms.length; i++)
{
emit(this.SearchTerms[i], 1)
}
}

因为后者在 reduce 后不会产生任何结果。为什么不呢?

顺便说一句 - 我需要做的是计算所有文档中搜索词的叉积,即找到(STA 和 STB)和(STA 和 STC)和(STB 和 STC)的发生率在上面的例子中。如果有人知道如何立即做到这一点,效果会更好。

一如既往,感谢您的帮助

最佳答案

您发出的键应该是两个键的组合。

    var map = function() {
if(!this.SearchTerms) return;
for(var i = 0 ; i < this.SearchTerms.length; i++){
var outerKey = this.SearchTerms[i];
for(var j = i + 1; j < this.SearchTerms.length; j++){
var innerKey = this.SearchTerms[j];
// assuming you don't care about counting (STA and STC) separately from (STC and STA),
// then order doesn't matter, lets make sure both occurences have the same key.
var compositeKey = (outerKey < innerKey) ? outerKey+"_"+innerKey : innerKey+"_"+outerKey;
emit(compositeKey, 1);
}
}
}

关于mongodb map 从子文档发出键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232338/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com