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