我该如何做才能进行涉及 mongoengine 上两种以上不同类型文档更新的交易?
Ubuntu 10.04.3 LTS mongodb-1.2.2-1ubuntu1.1 django 1.3 mongoengine-0.5.2 pymongo-2.1.2
模型:
class User(Document):
email = StringField(required=True)
first_name = StringField(max_length=50)
last_name = StringField(max_length=50)
class Comment(EmbeddedDocument):
content = StringField()
name = StringField(max_length=120)
class Post(Document):
title = StringField(max_length=120, required=True)
author = ReferenceField(User)
tags = ListField(StringField(max_length=30))
comments = ListField(EmbeddedDocumentField(Comment))
class TextPost(Post):
content = StringField()
class ImagePost(Post):
image_path = StringField()
class LinkPost(Post):
link_url = StringField()
Run Code Online (Sandbox Code Playgroud)
试图保存标题中包含"é"的帖子:
john = User(email='jdoe@example.com', first_name='John', last_name='Doe')
john.save()
post1 = TextPost(title='Fun with MongoEnginée', author=john)
post1.content = 'Took a look at MongoEngine today, looks …Run Code Online (Sandbox Code Playgroud) 如果我有一个列表字段类似于下面的集合.
class Post(Document):
tags = ListField(StringField())
Run Code Online (Sandbox Code Playgroud)
假设我有一个贴有标签的帖子:有趣,有趣.
如果我想搜索带有标签的帖子满足任何搜索条件,我该怎么办?
如果我将搜索词放在"有趣"和"奇妙"中,则上面的帖子应该在结果集中.
我试图阅读文档,但似乎没有这样的运算符."all"和"in"相似但不能执行我想要的.
谢谢!
干杯,克里斯
我在我的Flask应用程序(mongoengine)中使用mongoDB(mongoHQ).我有一个Document看起来像这样:
{items: [{id: 1}, {id: 2}, {id: 3}]}
Run Code Online (Sandbox Code Playgroud)
有没有达到的一种方式,例如,dict用id: 1在一个单一的查询?
目前我正在通过items一个next()声明循环列表,我希望有一个更明智的解决方案.谢谢
可以这样做吗?
class Doc1:
fieldd1 = StringField()
class Doc2:
fieldd2 = ReferenceField(Doc1.fieldd1)
Run Code Online (Sandbox Code Playgroud)
或者我应该只引用Doc,然后在需要时获取字段信息
我正在使用Django和MongoEngine开发一个简单的应用程序.我在后台运行mongod但我无法在Python shell中创建任何新元素(使用Product模型).我知道这一定是一个简单的错误,但我找不到它.
我的文件的层次结构如下:
products/
- __init.py__
- models.py
- views.py
__init__.py
manage.py
settings.py
urls.py
wsgi.py
Run Code Online (Sandbox Code Playgroud)
Python shell
>>> Product(name="test").save
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'Product' is not defined
Run Code Online (Sandbox Code Playgroud)
Models.py
from mongoengine import *
class Product(Document):
name = StringField(max_length=200)
Run Code Online (Sandbox Code Playgroud)
Settings.py
# Django settings for project.
from mongoengine import connect
connect('db1')
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
# MongoDB settings
MONGODB_DATABASES = { …Run Code Online (Sandbox Code Playgroud) 我有一个Text模型;
class Text(db.Document):
siphash_value = db.LongField()
Run Code Online (Sandbox Code Playgroud)
然后我用siphash lib创建一个哈希.(https://github.com/majek/pysiphash)
此lib将字符串转换为长值,如12398370950267227270L
如果我尝试将文档保存到我的数据库;
Text(siphash_value=12398370950267227270L).save()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
OverflowError: MongoDB can only handle up to 8-byte ints
Run Code Online (Sandbox Code Playgroud) 在查询pymongo时,我得到一个字典对象,可以直接作为对api请求的响应发送.mongoengine在查询数据库时返回Document对象的位置.因此,我必须解析每个对象,然后才能将其作为api中的响应发送.
这是我在mongoengine中查询的方式.
users = User.objects(location = 'US')
这将返回一个BaseQueryList包含User模型类型对象的对象.相反,我需要它应该返回一个用户的字典类型对象列表.
我正在使用Django和MongoDB构建一个网站.有2个,我们可以用它来连接流行的API框架Django和MongoDB,一个是mongoengine,另一个是django-mongodb-engine.
因为mongoengine不再支持Django 最新的Document,并且django-mongodb-engine需要另一个django-nonrel使开发环境有点复杂的软件包.
我想知道,如果我可以使用Pymongo连接Django和MongoDB直接.
有没有人可以分享相同的经验?以及如何setting.py在Django中设置db in 以使db公开?
我不知道如何连接到使用mongoengine的身份验证数据库的mongodb数据库.
在我需要的命令提示符上mongo hostname:27017/myApp -u "test" -p "test" --authenticationDatabase admin,但是我没有看到我将其作为mongoengine的参数传递给我,所以我使用admin数据库进行身份验证但是为我的模型连接到myApp数据库?
我相信这是在PyMongo指南中解释的地方:
https://api.mongodb.com/python/current/examples/authentication.html
>>> from pymongo import MongoClient
>>> client = MongoClient('example.com')
>>> db = client.the_database
>>> db.authenticate('user', 'password', source='source_database')
Run Code Online (Sandbox Code Playgroud)
我找到了将此添加到mongoengine的pull请求:
https://github.com/MongoEngine/mongoengine/pull/590/files
看起来你只是authentication_source作为一个参数添加connect喜欢connect(authentication_source='admin').如果记录得更好,那就太好了.
http://docs.mongoengine.org/apireference.html?highlight=authentication_source