MongoDBFlask和pymong

2024-04-27 19:31:05 发布

您现在位置:Python中文网/ 问答频道 /正文


我尝试用python框架Flask和MongoDB编写一个webapp,使用pymongo驱动程序。
我需要在线编辑数据

集合的结构:

db.skills.insert({ "rubric": rubric, "head": title, "body": content })

(如果值为<;0,则每个字段可以是$unset)

在控制器中,我通过创建dict列表将数据发送到视图:

def skList():
    liste, keys, value = [], [], []
# iterate over the collection to get 2 list of all keys and values.
    for row in db.skills.find():
        keys.append(row.keys())
        value.append(row.values())
# merge the 2 lists.
    zipped = zip(keys, value)
# finally create a list of dict containing each row of my db
    for x, y in zipped:
        liste.append(dict(zip(x, y)))
    return liste

结果是这样的:

^{pr2}$

在我看来,我反复检查,它显示得很好!
我还可以编辑/删除每个字段,或删除文档。

当我开始从视图添加数据时,我的问题就出现了:

有时,从视图中添加的下一个文档是集合中间的插入,因此顺序不固定,
从mongo shell中附加相同的内容。

我在这里找到了解释:
https://groups.google.com/d/msg/mongodb-user/B5jU0uyGhh8/i3LacXcXKDwJ

所以我必须处理这个顺序,我不想让视图显示文档,而且我不知道怎么做:p

有人可以建议一个解决方案,也许我应该用一个不同的模式?在


Tags: ofthe数据文档视图编辑dbvalue
1条回答
网友
1楼 · 发布于 2024-04-27 19:31:05

有一个解决方案可以迭代Mongo集合,并返回按每个文档的“index”字段排序的dict列表:

def collecList(collection):
    liste, keys, value = [], [], []
    for row in collection.find().sort("index"):
        keys.append(row.keys())
        value.append(row.values())
    zipped = zip(keys, value)
    for x, y in zipped:
         liste.append(dict(zip(x, y)))
    return liste

相关问题 更多 >