2013-07-24 3 views
1

Я хотел бы запросить коллекцию в базе данных MongoDB, чтобы найти все записи, содержащие часть ObjectID. Для нормальной строки можно использовать регулярные выражения, как это:mongo objectid 'contains' query

db.teams.find({"some_string": /^51eed/}) 

Но как бы я сделать что-то подобное на ObjectID?

В частности, у меня есть коллекция, которая выглядит примерно так:

{ "status" : 0, "_id" : ObjectId("51e97ff613e737801d000002") } 
{ "status" : 0, "_id" : ObjectId("51ee7513d1f7c57420000002") } 
{ "status" : 0, "_id" : ObjectId("51eed9dd5b605af404000002") } 
{ "status" : 0, "_id" : ObjectId("51eedab39108d8101c000002") } 

Я хотел бы запросить (в Монго) для всех записей, где ObjectId начинается с «51eed». Ваша помощь очень ценится.

ответ

2

Вы можете просто сделать это с помощью поиска диапазона, начните "51eed0000000000000000000" и заканчивается в "51eee0000000000000000000" (обратите внимание на «D» -> «е»):

db.teams.find({ 
    _id: { 
     $gte: ObjectId("51eed0000000000000000000"), 
     $lt: ObjectId("51eee0000000000000000000"), 
    } 
}) 
+0

Мех половина право: P – Sammaye

+0

Спасибо за быстрый ответы парни ... очень полезны. – rasmeister

0

Вы могли бы просто положить, что в новый ObjectId и заполнить оставшиеся с 0 «S, как:

db.teams.find({_id:{$gte:ObjectId("51eed0000000000000000000")}}) 

Если сделать трюк.

Смежные вопросы