问题标签 [pymodm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
160 浏览

python - MongoDB 唯一复合索引允许重复

我正在使用 PyMongo 和 PyMODM 来处理一个相当简单的文档结构。

这就是我的模型的样子:

我的单元测试看起来像这样,注意 DB 是一个包装实际 PyMongo 命令的 API。例如:put_user包装user.save()一些异常处理逻辑,而read_user包装User.objects.get().

当我运行这个测试时,read_user()/User.objects.get()调用失败并MultipleObjectsReturned返回对象错误,我可以确认有两条记录具有相同的interfacesubscriber_uid值。

从我在其他 StackOverflow答案评论中看到的情况来看,上面的复合唯一索引应该可以防止这种情况发生。

每次测试运行时都会删除数据库,因此问题不在于陈旧的数据挥之不去。我误解了复合指数吗?

0 投票
0 回答
146 浏览

python - 有没有比这更好的方法来使用 PyMODM QuerySet 类进行 $lookup(即 JOIN)?

模型

现在我有两个 PyMODM 模型:

如您所见,PlaylistTrack模型包含对模型的引用 id Post

问题

在我的代码中,我想获取与某些 Post 字段以及 PlaylistTrack 字段匹配的所有 PlaylistTrack,如下所示:

PyMODM 不允许我这样做,因为 post 不是嵌入式文档,但它是另一个帖子的引用字段。在研究文档后,我发现 mongodbaggregate()管道与$lookup操作符相结合会做一个左外连接,让我可以做这样的事情:

问题在于它返回的是 PyMongo CommandCursor 类型,而不是 PyMODM QuerySet 类型。这意味着我不能使用 QuerySet 类方法(与 PyMODM 模型一起使用更自然),而是必须将所有内容都转换为 PyMongo,这有点违背了使用 PyMODM 的目的和不自然的感觉。

我的解决方法

因此,相反,我将其作为一种 hacky 解决方法

我没有与 进行连接$lookup,而是找到我想要的 Post 并将其用作查询的一部分。

这确保返回的对象是 PyMODM QuerySet 对象。

我的问题

有没有更好的方法来使用本机 PyMODM 语法来解决这个问题?我是否误解了如何使用 PyMongo / PyMODM 的用途?

我知道在 NoSQL 中使用连接有点棘手,但我仍然觉得肯定有比这更好的方法。

0 投票
1 回答
157 浏览

python - PyMODM 获取没有 _cls 的对象

我有一个以前填充了没有_cls字段的文档的集合。

例如,现在我正在用这些类填充集合:

Pet.objects.all()仅返回从此脚本添加的文档(带有{'_cls':'Pet'}属性)。

是否可以使用 Pymodm 获取这些文档,或者这种情况破坏了使用 ORM 的所有感觉,最好切换到 pymongo?

0 投票
1 回答
20 浏览

python - 如何使用 pymodm 创建全文索引

我不完全确定如何使用 PyModm 创建全文索引。

我的Meta课看起来像这样:

但是,当我尝试使用get_queryset().raw()

不返回任何结果。

提前致谢。

0 投票
0 回答
35 浏览

python - Pymongo 中的会话,Pymodm

现在我想将“引擎”从 sqlalchecmy 引擎更改为 pymodm 引擎。Live_pr() 和 Symbol_data() 将更改为 pymodm 模型。而 symbol_engine() 将保持原样。有没有办法在这段代码中实现 mongo 会话?基本上我想要实现的是只用一个事务在 mongo db 中插入所有项目。Bulk_upload 也可以。但是对于 Symbol_data() 我想检查重复键错误,如果它抛出重复键错误我想更新而不是像在代码中那样插入。提前致谢。我对 pymodm 和 pymongo 比较陌生。

0 投票
1 回答
27 浏览

mongodb - 删除与 pymodm 中的查询匹配的文档

请帮忙,卡了几个小时,我如何删除直接在 pymodm 中与查询匹配的文档。

例如:

如何从我的数据库集合中删除此用户?