我正在尝试查询mongodb中的特定键,但是我始终以空结果结尾,而它应该返回1条记录。我看了一些基本相同的不同问题,但他们的回答对我没有帮助。
例如,我的mongo中具有以下结构
{
"_id": {
"$oid": "5bb7388354f02b041b6819b2"
},
"raw": {
"etag": "W/\"CQAAABYADtqt1sMfi5R4onmiTyvUAALqHFp9\"",
"id": "abcdefg"
}
}
我目前已经尝试了以下查询:
$id = "5bb7388354f02b041b6819b2";
$this->collection->find(['_id' => ['$oid' => $id]]);
但是这会返回错误
unknown operator: $oid
无论我尝试什么,它要么返回“未知运算符”,要么不返回任何内容。我还尝试如下切换查询并使用raw内的ID。
$id = "abcdefg";
$this->collection->find(['raw' => ['id' => $id]]);
但这对我没有任何回报。所以我想知道,我在做什么错了?
答案 0 :(得分:1)
MongoDB中的_id不是字符串而是ObjectId,因此您必须将其传递给查询对象
$this->collection->find(['_id' => new MongoDB\BSON\ObjectID($id)])
答案 1 :(得分:1)
$oid
不是该字段。只是表示它是mongodb ObjectId
所以您可以简单地尝试一下
$this->collection->find([ '_id' => $id ])
或
$this->collection->find([ 'raw.id' => $id ])