问题标签 [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.
python - MongoDB 唯一复合索引允许重复
我正在使用 PyMongo 和 PyMODM 来处理一个相当简单的文档结构。
这就是我的模型的样子:
我的单元测试看起来像这样,注意 DB 是一个包装实际 PyMongo 命令的 API。例如:put_user
包装user.save()
一些异常处理逻辑,而read_user
包装User.objects.get()
.
当我运行这个测试时,read_user()
/User.objects.get()
调用失败并MultipleObjectsReturned
返回对象错误,我可以确认有两条记录具有相同的interface
和subscriber_uid
值。
从我在其他 StackOverflow答案和评论中看到的情况来看,上面的复合唯一索引应该可以防止这种情况发生。
每次测试运行时都会删除数据库,因此问题不在于陈旧的数据挥之不去。我误解了复合指数吗?
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 中使用连接有点棘手,但我仍然觉得肯定有比这更好的方法。
python - PyMODM 获取没有 _cls 的对象
我有一个以前填充了没有_cls
字段的文档的集合。
例如,现在我正在用这些类填充集合:
并Pet.objects.all()
仅返回从此脚本添加的文档(带有{'_cls':'Pet'}
属性)。
是否可以使用 Pymodm 获取这些文档,或者这种情况破坏了使用 ORM 的所有感觉,最好切换到 pymongo?
python - 如何使用 pymodm 创建全文索引
我不完全确定如何使用 PyModm 创建全文索引。
我的Meta
课看起来像这样:
但是,当我尝试使用get_queryset().raw()
不返回任何结果。
提前致谢。
python - Pymongo 中的会话,Pymodm
现在我想将“引擎”从 sqlalchecmy 引擎更改为 pymodm 引擎。Live_pr() 和 Symbol_data() 将更改为 pymodm 模型。而 symbol_engine() 将保持原样。有没有办法在这段代码中实现 mongo 会话?基本上我想要实现的是只用一个事务在 mongo db 中插入所有项目。Bulk_upload 也可以。但是对于 Symbol_data() 我想检查重复键错误,如果它抛出重复键错误我想更新而不是像在代码中那样插入。提前致谢。我对 pymodm 和 pymongo 比较陌生。
mongodb - 删除与 pymodm 中的查询匹配的文档
请帮忙,卡了几个小时,我如何删除直接在 pymodm 中与查询匹配的文档。
例如:
如何从我的数据库集合中删除此用户?