gpt4 book ai didi

javascript - 如何有效地将多个集合聚合为一个集合

转载 作者:可可西里 更新时间:2023-11-01 09:55:37 30 4
gpt4 key购买 nike

我有四个收藏

1.links(movieId,imdbId,tmdbId) 
2.movies(movieId,title,genres),
3.tags(userId,movieId,tag,timestamp),
4.ratings(userId,movieId,rating,timestamp).

现在我需要做的是将它们聚合成一个集合,如下所示

movieId,imdbId,tmdbId,
title,genres,
u_data{[
{userId,tag,tag_timestamp,
rating,rating_timestamp}
]}

我怎样才能做到这一点。

我引用了 link1 .却想不出答案。(我使用 dataset from grouplens.org )

最佳答案

为简洁起见,我合并了您的前两个系列。此外,由于他们建议一对一关系,因此如果 16 MB 限制不是您的情况那样的问题,建议将其保存在一个文档中......


db.t1.insert({
movieId:1,
title:"title-1",
generes:["g1", "g2"],
imdbId:111,
tmdbId:112
});

db.t2.insert({
movieId:1,
userId:11,
tag:"t1",
timestamp: new Date()

});

db.t2.insert({
movieId:1,
userId:12,
tag:"t2",
timestamp: new Date()

});

db.t3.insert({
movieId:1,
userId:11,
rating:2,
timestamp: new Date()
});
db.t3.insert({
movieId:1,
userId:12,
rating:3,
timestamp: new Date()
});


db.t1.find().forEach(function(e){
var mId = e.movieId;
var arr = [];
var finalOutput = {};
finalOutput.movieId = mId;
finalOutput.title = e.title;
finalOutput.generes = e.generes;
finalOutput.imdbId = e.imdbId;
finalOutput.tmdbId = e.tmdbId;

db.t2.find({"movieId":mId}).forEach(function(e2){
var v = {};
v.userId = e2.userId;
v.tag = e2.tag;
v.tag_ts = e2.timestamp;
arr.push(v);
});

for(i in arr){
db.t3.find({movieId:mId, userId:arr[i].userId}).forEach(function(e3){
arr[i].rating = e3.rating;
arr[i].rating_ts =e3.timestamp;
});

}
finalOutput.u_data = arr;
printjson(finalOutput);
});

输出:https://www.dropbox.com/s/ijwg2xtbrwa8782/Screenshot%202015-06-22%2000.49.07.png?dl=0

关于javascript - 如何有效地将多个集合聚合为一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678459/

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