我在python中有以下代码:
from pymongo import Connection
import bson
c = Connection()
db = c.twitter
ids = db.users_from_united_states.distinct("user.id")
for i in ids:
count = db.users_from_united_states.find({"user.id":i}).count()
for u in db.users_from_united_states.find({"user.id":i, "tweets_text": {"$size": count}}).limit(1):
db.my_usa_fitness_network.insert(u)
我需要获取所有用户并找到每个用户的注册,其中tweets_text
数等于它在集合中出现的次数(这意味着此文档包含同一用户发布的所有推文)。然后,我需要将其保存在另一个集合中,或者只是将其分组到同一集合中。
当我运行此代码时,它给了我一个小于ids
数字的文档数量
看到了一些关于mapReduce的东西,但我只是不知道如何在我的情况下使用它。
我尝试直接在mongodb上运行另一个代码,但它根本没有工作:
var ids = db.users_from_united_states.distinct("user.id")
for (i=0; i< ids.length; i++){
var count = db.users_from_united_states.find({"user.id":ids[i]}).count()
db.users_from_united_states.find({"user.id":ids[i], "tweets_text": {$size: count}).limit(1).forEach(function(doc){db.my_usa_fitness_network.insert(doc)})
}
你能帮我吗?我有一个庞大的项目,我需要帮助。谢谢。
[
{
"$group": {
"_id": "$user.id",
"my_fitness_data": {
"$push": "$text"
}
}
},
{
"$project": {
"UserId": "$_id",
"TweetsCount": {
"$size": "$my_fitness_data"
},
"Tweets": "$my_fitness_data"
}
}
]