2012-04-20 7 views

Odpowiedz

19

Czy masz na myśli, że masz 24 szesnastkowy ciąg znaków w ObjectId?

Zakładając, że o to ci chodzi, większość kierowców ma sposób na pobranie ciągu znaków i przekonwertowanie go na ObjectID. W JavaScript to:

.find({_id:new ObjectId("4f91bfcfaa7c5687a0c686d4")}) 

Updated się być nieco bardziej przydatne dla kierowcy węzłów rodzimy (z dokumentacją w https://github.com/christkv/node-mongodb-native):

// Get the objectID type 
var ObjectID = require('mongodb').ObjectID; 

var idString = '4e4e1638c85e808431000003'; 
collection.findOne({_id: new ObjectID(idString)}, console.log) // ok 
collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined 
+0

Tak, rozumiesz moje pytanie. Przepraszam, prawdopodobnie nie było dobrze sformułowane, '_id's są domyślnymi obiektami bona mongo. Mają one mutacje podczas wysyłania json do klienta, dlatego najpierw są konwertowane na ciągi. Kiedy wracają do serwera, muszę zamienić je z powrotem w obiekty, aby wysłać do nich bazę danych? – fancy

+0

Tak, dla zapytania musisz przekonwertować je na 'ObjectId's ponownie. –

+0

ok, dzięki za informacje – fancy

1

Jeśli twoje _id wartości są łańcuchami, możesz zapytać je tak, jak każde inne pole. (Pamiętaj tylko, jeśli są wartości ustawień niestandardowych dla _id, muszą być przechowywane unikatowe, albo dostaniesz duplikat błąd klucza).

Oto przykład w Mongo JS Shell:

> db.test.insert({_id:"stringID1"}) 
> db.test.insert({_id:"stringID2"}) 
> db.test.insert({_id:"stringID3"}) 
> db.test.find({_id:"stringID1"}) 
{ "_id" : "stringID1" } 
> 

Czy tego właśnie szukałeś? Mam nadzieję, że źle zrozumiałem twoje pytanie!

+0

To faktycznie odpowiada na ** zadane ** pytanie, ale najwyraźniej nie jest to pytanie, które ona zamierzała zadać ** ^^ –

Powiązane problemy