![](/img/trans.png)
[英]How can I update a whole collection in MongoDB and not document by document?
[英]How can I convert a mongodb document collection to a numpy Array in python?
我正在尝试从我的 MongoDB 中获取密钥“Verlauf”上具有相同值的所有文档。 到目前为止有效。 但后来我想将此 output 转换为 numpy 数组。 这是如何运作的?
我使用以下命令从 MongoDB 获取列表中的文档:
v1 = list(collection.find({"Verlauf": 1}))
Output 看起来像这样(对于 2 个匹配的文档):
[{'_id': ObjectId('5f05aca208c3c86edf465953'), 'Verlauf': 1, 'Wie stark haben Sie den Kraftverlauf empfunden?': 2, 'Wie gut wurde dies empfunden?': 3, 'Dritte Frage hier einfügen': 4, 'Vierte Frage hier einfügen': 5, 'Fünfte Frage hier einfügen': 6, 'Sechste Frage hier einfügen': 7}, {'_id': ObjectId('5f05b89d48eb73c488a90efb'), 'Verlauf': 1, 'Wie stark haben Sie den Kraftverlauf empfunden?': 4, 'Wie gut wurde dies empfunden?': 5, 'Dritte Frage hier einfügen': 4, 'Vierte Frage hier einfügen': 5, 'Fünfte Frage hier einfügen': 4, 'Sechste Frage hier einfügen': 5}]
有没有办法在 numpy 数组中构造来自该列表的数据,其中第一行包含第一个键的所有值,第二行包含第二个键的所有值?
所以对于这个例子:
[ [5f05aca208c3c86edf465953, 5f05b89d48eb73c488a90efb],
[1, 1],
[2, 4],
[3, 5],
[4, 4],
[5, 5],
[6, 4],
[7, 5]]
我对所有这些数据处理都很陌生,非常感谢任何建议。
稍后我想分析这些数据以获取所有文档中每个键的最小值、最大值、下四分位数、上四分位数和中位数。
提前致谢。 问候汤姆
我不经常使用 python 所以我相当有信心有更好的方法来做到这一点。
当我玩它时,通常是小规模的实验,因此我只使用蛮力方法(你可以用几种不同的方式来做到这一点)。
columns = ["_id", "field1", "field2"]
data = list(map(lambda item: [item["_id"], item["field1"], item["field2"]], db.collection.find({})))
df = DataFrame(data, columns=columns)
你甚至可以多加一点糖:
columns = ["_id", "field1", "field2"]
data = list(map(lambda item: list(map(lambda col: item[col], columns)), db.collection.find({})))
df = DataFrame(data, columns=columns)
请注意,这不适用于嵌套字段,即"field1.nested"
值,因为 python 希望您使用item["field1"]["nested"]
访问嵌套字典值。 在这种情况下,我通常只使用 for 循环来实现所需的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.