Запрос вложенных документов в mongoDB - PullRequest
2 голосов
/ 22 сентября 2011

Я хочу запросить мою коллекцию Mongodb (name: wrappers) и получить все документы, которые имеют поле 'urls', заканчивающееся на '.com'

Я не уверен, как запрашивать вложенные документы, а также использовать регулярные выражения для запросов.

Я на самом деле кодирую это в perl. Однако запросы для запуска на оболочке mongo также подойдут.

Заранее спасибо!

Пример данных:

{ "_id" : ObjectId("4e7a34932cd4b16704000000"), "lastArray" : { "desc" : "google", "url" : "google.com", "data" : [
    {
        "name" : "1",
        "xpath" : [ ],
        "nodes" : [ ],
        "type" : "Any Text"
    },
    {
        "name" : "2",
        "xpath" : [ ],
        "nodes" : [ ],
        "type" : "Any Text"
    }



{ "_id" : ObjectId("4e7a34932cd4b16704000001"), "lastArray" : { "desc" : "yahoo", "url" : "yahoo.com", "data" : [
    {
        "name" : "1",
        "xpath" : [ ],
        "nodes" : [ ],
        "type" : "Any Text"
    },
    {
        "name" : "2",
        "xpath" : [ ],
        "nodes" : [ ],
        "type" : "Any Text"
    }

Ответы [ 2 ]

6 голосов
/ 22 сентября 2011
db.wrappers.find({"lastArray.url":{$regex:/\.com$/}});
0 голосов
/ 22 сентября 2011

Я не уверен на 100%, можете ли вы использовать регулярные выражения для поиска в атрибутах поддокументов или даже по соображениям производительности. В таком случае может быть проще добавить атрибут "tld" и выполнить запрос на точное совпадение. Что-то вроде этого {"lastArray.tld": "com"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...