Можно ли запросить mongodb по ключам массива? - PullRequest
2 голосов
/ 18 мая 2011

В моей таблице есть массив, индексированный строкой, и я хочу, чтобы все записи соответствовали этой строке, независимо от значения.Например, получить всю запись, где id1 заполнен:

var a = {
   type: "Information",
   ids: {
     'id1' : '123'
     'id2' : '456'
   }
 };


var b = {
   type: "Information",
   ids: {
     'id1' : '789'
   }
 };

Возможно ли это сделать с помощью mongodb и как?

Ответы [ 2 ]

8 голосов
/ 18 мая 2011

Вы можете использовать $ для этого:

> db.things.insert({'type': 'Information', 'ids':{'id1': 123, 'id2': 456}})
> db.things.insert({'type': 'Information', 'ids':{'id1': 746, 'id2': 456}})
> db.things.insert({'type': 'Information', 'ids':{'id2': 456, 'id3': 936}})

> db.things.find({'ids.id1': {'$exists': true}})
{ "_id" : ObjectId("4dd3c706938307861ed610dd"), "type" : "Information", "ids" : { "id1" : 123, "id2" : 456 } }
{ "_id" : ObjectId("4dd3c7a1938307861ed610de"), "type" : "Information", "ids" : { "id1" : 746, "id2" : 456 } }
2 голосов
/ 18 мая 2011

Благодаря scoates в канале #mondodb это можно сделать с помощью функции exist: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24exists

db.Information.find({"ids.id1":{$exists:true}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...