0

这是我在 rethinkDB 中的表

[{"username": "row1", "some_key": ["str1", "str2"]}, {"username": "row2", "some_key": ["str3", "blah"]}, {"username": "row3", "some_key": ["blah", "blahblah"]}]

field列)name可以重复。我有一个list ['row1', 'row2'].

我想运行查询并获取所有documents(行namelist

到目前为止,我有这个:

r.db(self.PROJECT_DB).table(self.PROJECT_TABLE_PICWIZ).filter(r.row['username'] == name for name in following).limit(5).run(self.db_connection)

followinglist这里。

但这会返回所有documents(行)

4

1 回答 1

0

假设这是 Python。我认为从我的理解是你想要这样的东西,考虑到following只是一个列表:

picwiz = r.db(self.PROJECT_DB).table(self.PROJECT_TABLE_PICWIZ)
picwiz.filter(lambda doc: r.expr(following).contains(doc['username']))\
  .limit(5)\
  .run(self.db_connection)

这是正在发生的事情:

此过滤器采用一个匿名函数,该函数获取您调用的字符串列表,然后对于表中的每个文档,通过该方法following检查用户名字段是否在该列表中,如果是则返回,如果否,则从最终添加或删除它结果。containsTrueFalse

可能也可以用以下内容替换 lambda 函数,以获得更多 Pythonic 和更少 ReQL-ish 的东西。

lambda doc: doc['username'] in following
于 2016-04-13T22:02:48.897 回答