RavenDB对象在查询时正确保存了一些空属性

时间:2017-02-22 09:46:50

标签: python json ravendb

我目前正在尝试通过RavenDB数据库中的PyRavenDB保存一些python对象(网站)。问题是数据保存得当,但是当我通过查询结果进行测试时,一些属性被返回为空。 代码很简单,我无法正确找到问题。

数据库中的JSON对象如下(通过DB Web UI验证)。

{
    "htmlCode": "<code>TEST HTML</code>",
    "added": "2017-02-21",
    "uniqueid": "262e4584f3e546afa2c67045a0096b54",
    "url": "www.example.com",
    "myHash": "d41d8cd98f00b204e9800998ecf8427e",
    "lastaccessed": "2017-02-21"
}

当我使用此代码查询

from pyravendb.store import document_store
        store =  document_store.documentstore(url="http://somewhere:someport", database="websites")
        store.initialize()
        with store.open_session() as session:
            query_result = list(session.query().where_equals("www.example.com", url))
            print query_result
            print type(query_result)
            return query_result

它返回此对象:

{
 'uniqueid': 'f942e86f965d4709a2d69caca3001f2a',
 'url': '',
 'myHash': 'd41d8cd98f00b204e9800998ecf8427e',
 'htmlCode': '',
 'added': '2017-02-21',
 'lastaccessed': '2017-02-21'
}

如您所见,url和html代码为空。它们应该是好的,因为在DB中它们被妥善存储。

感谢。

1 个答案:

答案 0 :(得分:2)

这里的问题是你没有使用where_equal权限。 where_equal第一个参数是您要查询的字段名称,然后是值(def where_equals(self, field_name, value))。

只需更改此行query_result = list(session.query().where_equals("www.example.com", url))

即可

query_result = list(session.query().where_equals("url", "www.example.com"))

这将解决您的问题