3

我有这样的mongodb文件

[_id] => MongoId Object (
    [$id] => 52135a6baabacb9f948b4567
)
[change] => 7
[from] => 8
[to] => 1

如何在MongoDB中选择字段“from”大于“to”的文档?我尝试过这样的事情,但它根本不起作用。

$collection->find( array('from' => array('$gt' => 'to') ) );
4

2 回答 2

7

我建议不要使用$where. 在规模上它会很慢。

对于此用例,您需要将逻辑从查询移至文档模式。向您的文档添加一个名为“from_to_diff”的新属性,并在文档写入时将其设置为“from”-“to”。

然后,运行以下查询:

$collection->find(array('from' => array('$gt' => 0)))

然后,在 {from_to_diff: 1} 上创建一个索引。您的索引将具有良好的基数,并且不会运行您将使用$where.

于 2013-08-19T19:17:46.977 回答
2

应该是这样的;)

$collection->find( array('$where' => 'this.from > this.to'  ) );
于 2013-08-19T18:47:06.367 回答