【发布时间】:2012-11-20 11:55:20
【问题描述】:
{
"teachers" : [
{"name": "Lucy", "id": 3, course: "history"},
{"name": "Mark", "id": 6, "course": "maths"},
{"name": "Joan", "id": 20, course: "French"}
]
}
此文档在“学校”收藏中。我一直在尝试使用
访问这些嵌入的文档db.school.find({teachers:{id:3}})
我也试过了
db.school.find({teacher.id:3})
但我知道它不起作用,因为 mongo 无法查看嵌入式数组。 因此,我想将这些嵌入的文档变成单独的文档。也就是说,删除嵌入和“教师”键,为每个教师创建一个单独的文档。
最终的“学校”收藏将是
{"name": "Lucy", "id": 3, "course": "history"},
{"name": "Mark", "id": 6, "course": "maths"},
{"name": "Joan", "id": 20, "course": "French"}
我想用 python 来做,并将新文档保存到一个集合中。
编辑
这是我现在想出的:
import pymongo
import sys
connection = pymongo.Connection("mongodb://localhost", safe=True)
db = connection.hello
shows = db.school
for doc in db.school:
for indiv in "teachers":
try:
db.individual.insert(indiv)
except:
print "Unexpected error", sys.exc_info()[0]
【问题讨论】:
-
问题是;是否可以转 {"teachers" : [{name:"Lucy", id:3, course:"history"}, {name:"Mark", id: 6, course:"maths"}, {name: "Joan", id:20, course:"French"} ] } 转化为 {name:"Lucy", id:3, course:"history"}, {name:"Mark", id: 6, course:"maths "}, {name:"Joan", id:20, course:"French"}
-
我不明白。你是什么意思'可能'?用蟒蛇?使用 mongodb 控制台还是无论如何?
-
我想用 python 来做,并将新文档保存到一个集合中。对不起,我不是很清楚..
-
编写一个python脚本来进行这种数据库转换将是一种有效的方法。你也可以用 mongo shell 来做,因为它是一个成熟的 javascript 解释器,但是当你对 python 感觉更舒服时,就去吧。那么是什么阻止你这样做呢?
-
也许您可以手动将数据从旧集合替换为新集合?是否需要使用脚本?