En este post MongoDB finding nested elements, autor afirma que la estructura del documento mongodb es
car : { "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}
cuando traté de reproducir el problema, me encontré con algunos comportamientos extraños con la inserción mongodb
Cuando se ejecuta la inserción en los datos de ejemplo anterior, obtuve siguiente error
> db.sample.insert({car:{ "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}})
Tue Jan 24 14:09:07 uncaught exception: field names cannot start with $ [$oid]
se dice que los nombres de campo no pueden comenzar con $
.
Si ése es el caso, para que no funcione si quito $
a partir del Viejo y dejó el resto sin tocar $ref
& $id
> db.sample.insert({car:{ "$ref" : "cars" , "$id" : { "oid" : "4e8478ace4b0dea06288ad63"}}})
> db.sample.find()
{ "_id" : ObjectId("4f1e6fbc403aae757ec6dea5"), "car" : { "$ref" : "cars", "$id" : { "oid" : "4e8478ace4b0dea06288ad63" } } }
sorprendentemente funcionó. Ahora acepta los campos comienzan con $
También cuando he intentado esta consulta
> db.sample.insert({ "$ref" : "cars" })
document to insert can't have $ fields
tengo el error de vuelta.
No entiendo qué causa esto? alguien tiene una idea clara?
Sí, esa es la razón ...gracias – RameshVel
¿hay alguna manera de arriesgar el DBRefs? – Backlit
@Backlit: Lo siento, no entiendo la pregunta. ¿Desea cambiar la sintaxis de los dbrefs? Asegúrese de comprender que no tiene que usar dbrefs; de hecho, generalmente no es necesario y los documentos oficiales recomiendan que use enlaces directos simples, como 'UserId: 423434'. – mnemosyn