2016-04-13 47 views
0

的列表的字符串这是我的表rethinkDBRethinkDB:​​从匹配字符串

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

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

我想运行查询并获取所有documents(行),其中name出现在list

到目前为止,我有这样的:

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)

following是这里的list

但这返回所有documents(行)

+0

嘿Chronix,我没有在您的文档中看到“跟随”或“用户名”字段?那些存在,但你只是没有列出它们? – dalanmiller

+0

'following'是列表生成不相关的表无论如何 – Chronix01

回答

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,然后在表中的每个文件,如果检查用户名字段是通过contains method该名单,并返回True如果是,和False如果没有,添加或从最终结果中删除。

这可能是也可以更换更多的或许真的以下一点Python的少ReQL十岁上下的lambda函数。

lambda doc: doc['username'] in following 
+0

'rethinkdb.errors.ReqlServerCompileError:在嵌套查询不能使用r.row。使用函数来代替在:。 r.db( 'picwiz')表( '活动')滤波器(拉姆达VAR_2:r.expr([ 'd4N73', '二'])含有(拉姆达VAR_1:r.row [“用户名”]))的限制(5)' – Chronix01

+0

它给了我这个错误,是下面只是一个列表,这条巨蟒,感谢您的答复:) – Chronix01

+0

给我的编辑一拍:d – dalanmiller