В этом посте MongoDB обнаруживает вложенные элементы , автор утверждает, что структура документа mongodb
car : { "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}
Когда я пытался воспроизвести проблему , я столкнулся с некоторыми странными действиями при вставке mongodb
. При запуске вставки для приведенных выше примеров данных я получил следующую ошибку
> db.sample.insert({car:{ "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}})
Tue Jan 24 14:09:07 uncaught exception: field names cannot start with $ [$oid]
, в которой говорится, что имена полей не могут начинаться с $
.
Если это так, он не должен работать, если я удалю $
из oid и оставлю оставшиеся $ ref
& $ id
нетронутыми
> db.sample.insert({car:{ "$ref" : "cars" , "$id" : { "oid" : "4e8478ace4b0dea06288ad63"}}})
> db.sample.find()
{ "_id" : ObjectId("4f1e6fbc403aae757ec6dea5"), "car" : { "$ref" : "cars", "$id" : { "oid" : "4e8478ace4b0dea06288ad63" } } }
на удивление это сработало. Теперь он принимает поля, начинающиеся с $
. Также, когда я попробовал этот запрос
> db.sample.insert({ "$ref" : "cars" })
document to insert can't have $ fields
, я получил сообщение об ошибке.
Я не понимаю, чем это вызвано? у кого-нибудь есть четкое представление?