2011-07-29 3 views
10

に_idによってレコードを見つけることが、私はできません。私はそれを行う方法の例を見つけましたが、それを働かせることはできません。例:は、なぜ私はそれがMongoID「_id」フィールドのではMongoDBのレコードを見つけようとしていますMongoDBの

$recID = "010101010101011"; //would be a valid mongodb _id 
$recID = new MongoId((string)$recID); // I have tried it without the (string) cast too 
$cursor = $this->Collection->findOne(array('_id' => $recID)); 
print_r($cursor); 

それを出力しない:内部

MongoCursor (
) 

何も。

私は、このような「firstNameの」として別のフィールドに上記の「_id」を変更し、最初の名前を渡すことによって働いている他のすべてを確認しても、私は戻って有効なデータを取得します。

なぜこれは機能しませんか?

私も文字列として$ RECID、差なしで検索を試してみました。

はここに(私が適切に照会していた場合、私はわからないが)のmongoシェルから何が起こるかです:

> 
> db.Employee.find({login:"myperson"}) 
{ "_explicitType" : "project.Employee", "_id" : ObjectId("4e209564203d83940f0000 
06"), "active" : true, "addedDate" : "07/15/2011 15:29:21", "domain" : "xxx", 
"id" : ObjectId("4e209564203d83940f000006"), "lastLogin" : "07/20/2011 19:13:36 
", "login" : "myperson", "name" : "My Person", "pw" : "", "ulevel" : 9999 
} 
> db.Employee.find({id:"4e209564203d83940f000006"}) 
> db.Employee.find({_id:"4e209564203d83940f000006"}) 
> 

通告何もIDまたは_idのために返されません。

+0

を見つけることができますか? – KaKa

答えて

26

を使用すると、オブジェクトIDラッパーの周りにあなたのIDをラップすることができdb.Employee.find({_id:ObjectId("4e209564203d83940f000006")}

+2

これはシェルで動作しますが、上記のコードを使用してphpで動作していません。 –

+1

私は再び私のPHPコードを見直して、今働いています。なぜ私は考えていない。しかし、mongodbシェルについては良い学習でした。 –

4

を試してみてください。これは、mongo dbに特定の列_id列を探しさせます。

var ObjectID=require('mongodb').ObjectID; 

その後、あなたはそれがMongoDBのインタラクティブシェルを使用して

collection.findOne({_id: ObjectID(id)},function(err,user){ //blah blah} 
関連する問題