1

我对 mongoDb 真的很陌生,但我遇到了问题。

我在一个集合中有这个字段:

data: [ "data1", "data2" ]

为什么通过控制台进行此查询有效:

db.collection.find({'data': /data1/})

但这不是吗?

 $hasData = $this->documentManager->createQueryBuilder('Document\\Collection')
        ->field('data')->equals( new \MongoRegex('/data1/'))
        ->count()
        ->getQuery()
        ->execute();

我哪里错了?谢谢

4

2 回答 2

0

我已经通过添加另一个歧视来解决:

$hasData = $this->documentManager->createQueryBuilder('Document\\Collection')
        ->field('data')->equals( new \MongoRegex('/data1/'))
        ->field('_id')->equals(new \MongoId($user->getId()))
        ->count()
        ->getQuery()
        ->execute();
于 2013-04-12T09:00:30.450 回答
0

尝试向该字段添加一个 elemMatch() 表达式。

->field('my_field')->elemMatch($qb->expr()->field('data')->equals('data1'))
于 2014-01-27T13:59:39.917 回答