2
我已经将数据从txt文件提取到NumPy数组中。我现在试图将这些数据添加到已存在集合中的嵌入文档数组中。目前,该数组被命名为“收视率”,并且只保存一个空字段的文档。如何将文档添加到使用PyMongo的集合中的数组
下面是代码:
ratings = np.loadtxt('outfile_ratings.sql', skiprows=1)
fn = 'outfile_users.sql'
with open(fn, encoding="utf-8") as f: lines = f.readlines()
[l.strip().split("\t") for l in lines]
users = np.array([l.strip().split("\t") for l in lines])
dbClient = pm.MongoClient()
db = dbClient['moviesDat']
col = db['usersDat']
for i in range(1, 944):
if np.size(users[i][:]) == 5:
resInsert = col.insert_one({"_id": users[i][0]})
for i in range(1, 944):
if np.size(users[i][:]) == 5:
resUpdate = col.update_one({"_id": users[i][0]},
{"$set": {"age": users[i][1],
"gender": users[i][2],
"occupation": users[i][3],
"zip_code": users[i][4]}})
for row in ratings:
resUpdate = col.update_one({"_id": row[0]},
{"$addToSet": {"ratings": {"rating": " ",
"movie_id": " ",
"timestamp": " "}}})
for row in ratings:
resUpdate = col.update_one({"_id": str(row[0])},
{"$push": { "ratings": {"rating": row[2],
"movie_id": row[1],
"timestamp": row[3]}}})
在最后调用update_one()我使用$push
运营商的值添加到嵌入文档字段,但没有效果。
如何将数据添加到我的集合中的数组?
编辑:...和数据集文件:
outfile_ratings.sql:
user movie rating timestamp
1 1 5 874965758
1 2 3 876893171
1 3 4 878542960
1 4 3 876893119
1 5 3 889751712
1 6 5 887431973
1 7 4 875071561
1 8 1 875072484
outfile_users.sql:
id age gender occupation zip_code
1 24 M technician 85711
2 53 F other 94043
3 23 M writer 32067
4 24 M technician 43537
5 33 F other 15213
6 42 M executive 98101
7 57 M administrator 91344
您可以将样本数据集? outfile_user.sql的内容。如果你的数据集不是太大,你也可以使用$ push $ each语法一次传递整个数组,并让mongodb扩展数组。 – Saleem
我将如何包含数据集文件? – AutomEng
只是粘贴在几行以上。 – Saleem