MongoDB находит вложенные элементы - PullRequest
3 голосов
/ 24 января 2012

Я использую оболочку MongoDB, и мне нужно найти некоторые вложенные элементы. Моя структура выглядит так:

 car : { "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}

Мне нужно добраться до oid = 4e8478ace4b0dea06288ad63

заранее спасибо

Вот структура:

{ "_id" : { "$oid" : "4e7c6b68e4b0dea06288ad22"} , 
  "driver" : "Test Driver" , 
  "category" : "BUSINESS" , 
  "distanceM" : 216.857 , 
  "mileageKmStart" : 121813.943 , 
  "mileageKmEnd" : 122030.8 , 
  "timestampStart" : { "$date" : "2012-01-12T11:20:08Z"} , 
  "timestampEnd" : { "$date" : "2012-01-12T11:21:11Z"} , 
  "car" : { 
      "$ref" : "cars" , 
      "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}
   }
}

1 Ответ

4 голосов
/ 24 января 2012

После крошечного копания вокруг ...

mongoexport будет представлять идентификаторы объектов как "$ oid".Вы читаете файл json, сгенерированный mongoexport?Если это так, то не структура ваших документов при импорте (или это так, но когда вы используете клиент для общения с Монго, он не хочет, чтобы вы использовали этот синтаксис).

Почти наверняка вы захотите:

db.x.find({'car.$id': ObjectId('4e8478ace4b0dea06288ad63')})

Если это не так - загляните в монго клик - например, запустите:

db.x.findOne()

или

db.x.findOne({'car' : {$exists: true}}) // make sure the one I find has a car

Если вам удалось создать / унаследовать данные с недопустимыми ключами - вы, вероятно, захотите перенести их структуру, чтобы можно было запрашивать ваши данные.


DBRefs - это соглашение о том, как создавать ссылки на разные коллекции - обратите внимание на «соглашение».Они не являются специальными (за исключением того, что им разрешены ключи $ ref, $ id и $ db) в любом случае - это просто еще один объект javascript для mongo.

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