В этом посте 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
я получил ошибку обратно.
Я не понимаю, что вызывает это?У кого-нибудь есть четкое представление?