2016-01-26 1 views
0

Я новичок в MongoDB и изучаю вещи сейчас. Здесь я столкнулся с следующим вопросом, который я не могу запросить. Ниже приведены данные JSON, и когда я пытаюсь найти «title»: «ERP», используя следующий db.ERP.find ({«title»: «ERP»}), он не извлекает данные, даже если есть данные. Также было бы заявление о поиске «идентификатора» данных: «0750652071», «категории»: [«Бизнес & Экономика»].Mongodb Найти команду для внутренней линии Json data

Может ли кто-нибудь помочь мне в том, как этого достичь?

Json данных:

{ 
    "_id" : ObjectId("56a6d9c13cd5c314da703c80"), 
    "kind" : "books#volumes", 
    "totalItems" : NumberInt(1088), 
    "items" : [ 
     { 
      "kind" : "books#volume", 
      "id" : "7r2cTflTfpQC", 
      "etag" : "sEiEfpm5JFQ", 
      "volumeInfo" : { 
       "title" : "ERP", 
       "subtitle" : "The Implementation Cycle", 
       "authors" : [ 
        "Stephen Harwood" 
       ], 
       "publisher" : "Butterworth-Heinemann", 
       "publishedDate" : "2003", 
       "industryIdentifiers" : [ 
        { 
         "type" : "ISBN_10", 
         "identifier" : "0750652071" 
        }, 
        { 
         "type" : "ISBN_13", 
         "identifier" : "9780750652070" 
        } 
       ], 
       "readingModes" : { 
        "text" : false, 
        "image" : true 
       }, 
       "pageCount" : NumberInt(183), 
       "printType" : "BOOK", 
       "categories" : [ 
        "Computers" 
       ], 
       "averageRating" : 4.0, 
       "ratingsCount" : NumberInt(2), 
       }, 
      "saleInfo" : { 
       "country" : "US", 
       "saleability" : "NOT_FOR_SALE", 
       "isEbook" : false 
      } 
     }, 
     { 
      "kind" : "books#volume", 
      "id" : "3j86qt9VQ2kC", 
      "etag" : "MQN5u7Pj6yo", 
      "volumeInfo" : { 
       "title" : "ERP: Making It Happen", 
       "subtitle" : "The Implementers' Guide to Success with Enterprise Resource Planning", 
       "authors" : [ 
        "Thomas F. Wallace", 
        "Michael H. Kremzar" 
       ], 
       "publisher" : "John Wiley & Sons", 
       "publishedDate" : "2002-07-15", 
       "industryIdentifiers" : [ 
        { 
         "type" : "ISBN_13", 
         "identifier" : "9780471217039" 
        }, 
        { 
         "type" : "ISBN_10", 
         "identifier" : "0471217034" 
        } 
       ], 
       "readingModes" : { 
        "text" : false, 
        "image" : true 
       }, 
       "pageCount" : NumberInt(384), 
       "printType" : "BOOK", 
       "categories" : [ 
        "Business & Economics" 
       ], 
       "averageRating" : 4.0, 
       "ratingsCount" : NumberInt(4), 
       }, 
      "saleInfo" : { 
       "country" : "US", 
       "saleability" : "FOR_SALE", 
       "isEbook" : true 
      } 
     } 
    ] 
} 

Благодарим Вас за помощь!

+0

Если данные не возвращаются, убедитесь, что вы правильно напечатали. 'db' - это дескриптор текущей используемой базы данных, без ограничений. – Dummy

+0

Благодарим вас за быстрый ответ. когда я так пытался, он не возвращает никаких данных. db.ERP.find ({"identifier": "0750652071", "categories": "Business & Economics"}) – suma

+0

Поскольку ваш запрос неверен, он ничего не соответствует, поэтому он ничего не возвращает. У вас есть массив элементов, который содержит кучу элементов вспомогательного документа. Найдите Google для обозначения «mongodb dot notation» и/или «$ elemMatch». Вы увидите справочный документ для всего, что вам нужно знать, чтобы работать с mongodb. – Dummy

ответ

0

Для поиска данных, где tile является ERP использование следующий синтаксис:

db.collection.find({"items.volumeInfo.title":"ERP"}) 

Чтобы найти данные с identifier: 0750652071 и categories: [ "Business & Economics"] использование следующий синтаксис:

db.collection.find({ "items.volumeInfo.industryIdentifiers.identifier" : "0750652071", "items.volumeInfo.categories" : { $in : [ "Business & Economics"] } }) 

Если хочет только первый пункт которые соответствуют вашим критериям, включают следующее поле в ваш запрос: {"items.$" : 1}:

db.collection.find(
        { 
         "items.volumeInfo.industryIdentifiers.identifier" : "0750652071", 
         "items.volumeInfo.categories" : { $in : [ "Business & Economics"] } 
        }, 
        { "items.$" : 1 } 
       ); 
+0

спасибо за подсказку .. Я пробовал, не дал мне никакого результата. оцените вашу помощь – suma

+0

Вы изменили название коллекции? –

+0

Да, я изменил название коллекции на «ERP». Однако при использовании приведенного ниже описания db.ERP.find ({"items.volumeInfo.industryIdentifiers.identifier": "0750652071", "items.volumeInfo.categories": {$ in: ["Бизнес и экономика"]}}), он возвращает все две детали, но я ожидаю, что будут отображены детали одного элемента. Заранее спасибо! – suma

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