を私は教義に
db.getCollection('queues').find({
$and:[
{queue: 'testo'},
{$or: [
{$and: [{reserved_at: null}, {available_at:{'$lte':1490323024}}]},
{reserved_at:{'$lte':1490323024}}
]}
]
});
このクエリをひそかにしようとしていますが、私はこのエラーを取得しています。
Can't canonicalize query: BadValue $or/$and/$nor entries need to be full objects.
これは私が試みたものです。
$builder = $this->get('doctrine_mongodb')->getManager()->createQueryBuilder('AppBundle:Ticket');
$builder->findAndUpdate()->addAnd([
$builder->field('queue')->equals($queue),
$builder->addOr([
$builder->addAnd([
$builder->field('reservedAt')->equals(null),
$builder->field('availableAt')->lte($currentTime)
]),
$builder->field('reservedAt')->lte($expiration)
])
])
->sort('id', 'ASC')
->limit(1)
->field('reservedAt')->set($currentTime->getTimestamp());
$job = $builder->getQuery()->execute()->toArray();
このコードで何が問題なのですか?
私はPHPの専門家ではありませんが、$やステートメントを作成しているときに正しい配列を渡していますか? –