我遇到了来自存储库类的查询问题。
我需要mongodb的这个结果
db.RequestsPictures.find({
"picture.$id": {
"$in":[
ObjectId("5013a65dd1853eb02c000000"),
ObjectId("5013a47dd1853e4919000001")
]
}
}).sort([ ]);
此查询在 MongoDB 中正常工作,但我不知道如何使用QueryBuilder
编写此查询。
如果我测试这段代码 - 学说会设置错误的引号
$ids = array(
'ObjectId("5013a65dd1853eb02c000000")',
'ObjectId("5013a47dd1853e4919000001")'
);
$ids = implode(',', $ids);
return $this->createQueryBuilder()
->field('picture.$id')
->in(array($ids))
->getQuery()
->execute()
->toArray();
此代码的结果:
db.RequestsPictures.find({
"picture.$id": {
"$in": [
"ObjectId("5013a65dd1853eb02c000000"),
ObjectId("5013a47dd1853e4919000001")"
]
}
}).sort([ ]);
[
之后和]
之前的引号是不必要的。
那么你能告诉我如何在QueryBuilder
?
答案 0 :(得分:3)
解决方案:
$ids = array(
new \MongoId('5013a65dd1853eb02c000000'),
new \MongoId('5013a47dd1853e4919000001')
);
return $this->createQueryBuilder()
->field('picture.$id')
->in($ids)
->getQuery()
->execute()
->toArray();