我有一个逻辑表达式:
( Ts == <lastTs> && Id > <lastId> ) || Ts > <_lastTs>
其中Ts和Id是集合的字段,而且是变量。
我正在使用Yii Mongodb套件,所以我不能使用&#34; $或&#34;运营商,因为它没有实施。
所以我把这句话改成了:
!(!( Ts == <lastTs> && Id > <lastId> ) && Ts <= <lastTs> )
可以在Mongo中运行这样的东西吗?
我尝试构建一些东西,但是当我这样做时我注意到了:
"$not": {
"created_at": {"$lte": ISODate("...")},
"_id": {"$gte": MongoID(...)}
}
它不会返回任何结果。但当我删除&#34; $ not&#34;它返回一些数据。我不确定它是否允许在场上使用$ not。
有没有办法在Mongo中运行这样的查询?
答案 0 :(得分:1)
您可以使用EMongoCriteria :: setConditions()设置复杂条件。它接受任何类型的数组作为参数,EMongoDocument :: find()将它保持不变地传递给PHP的Mongo扩展。
试试这个:
$c = new EMongoCriteria;
$c->setConditions([ '$or' => [
'created_at' => ['$gt' => ... ],
'$and' => [
'_id' => ['$gt' => ... ],
'created_at' => ['$eq' => ...]
]
]
]);
$documents = MyCollection::model()->find($c);