使用Between之间的RethinkDB复合索引怪异

时间:2016-02-26 10:21:40

标签: rethinkdb

我注意到RethinkDB中的函数之间的复合索引有些奇怪。它似乎检索与查询不匹配的结果。这些都在下面详述。

r.dbCreate('test')

r.db('test').tableCreate('numbers')

r.db('test').table('numbers').insert([
    { first: 1, second: 1 },
    { first: 1, second: 2 },    
    { first: 1, second: 3 },    
    { first: 1, second: 4 },    
    { first: 1, second: 5 },    
    { first: 2, second: 1 },    
    { first: 2, second: 2 },    
    { first: 2, second: 3 },    
    { first: 2, second: 4 },    
    { first: 2, second: 5 },    
    { first: 3, second: 1 },    
    { first: 3, second: 2 },    
    { first: 3, second: 3 },    
    { first: 3, second: 4 },    
    { first: 3, second: 5 },
    { first: 4, second: 1 },    
    { first: 4, second: 2 },    
    { first: 4, second: 3 },    
    { first: 4, second: 4 },    
    { first: 4, second: 5 },    
    { first: 5, second: 1 },    
    { first: 5, second: 2 },    
    { first: 5, second: 3 },    
    { first: 5, second: 4 },    
    { first: 5, second: 5 }
  ])

r.db('test').table('numbers').indexCreate(
    "both", [r.row("first"), r.row("second")])

r.db('test').table('numbers').orderBy({index :'both'}).between(
  [2, 3], [3, 5], {index: 'both', rightBound: 'closed'}).without('id')

// output

{ "first": 3 , 
"second": 3 
} // ok

{ "first": 3 , 
"second": 4 
} // ok

{ "first": 2 , 
"second": 5 
} // ok

{ "first": 3 , 
"second": 1 
} // not ok

{ "first": 3 , 
"second": 5 
} // ok

{ "first": 3 , 
"second": 2 
} // not ok

{ "first": 2 , 
"second": 3 
} // ok

{ "first": 2 , 
"second": 4 
} // ok

查询中的数组似乎不像AND或OR。我错过了什么或者这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

好的,感谢来自Slack频道的originalexe的一些帮助,我已经想到了这一点。它表现正常,基本上数组被视为单个值,查询返回有序列表中两者之间的所有值。