如何在Mongosh中访问DBRef的$id与$ref属性?
在Mongosh中访问DBRef的$id与$ref字段
问题场景
使用MongoDB 6.0.4及Mongosh 1.4.1,通过以下操作插入包含DBRef关联的文档:
// 插入出版社文档 publisher_id = ObjectId() db.publishers.insert_one({ '_id': publisher_id, 'title': 'XXX', 'website': 'https://xxxxxxx.com', }) // 插入关联出版社的书籍文档 db.books.insert_one({ 'title': 'Good book', 'author': 'Someone', 'publishers': [ { '$ref': 'publishers', '$id': publisher_id, }, ], })
执行命令获取DBRef对象后:
> var book = db.books.findOne({title:'Good book'}) > var dbRef = book.publishers[0] > dbRef DBRef("publishers", ObjectId("..."))
尝试直接访问dbRef.$id和dbRef.$ref时返回空行,但dbRef.collection可正常返回publishers,JSON.stringify(dbRef)也能正确输出包含$ref和$id的完整结构。
解决方案
根据Mongosh版本不同,需使用对应方式访问DBRef的关联信息:
较新版本Mongosh(如1.4.1及以上)
直接通过以下属性访问:
// 获取关联文档的ObjectId > dbRef.oid ObjectId("...") // 获取关联的集合名称 > dbRef.collection publishers
较旧版本Mongosh
通过toJSON()方法转换后访问对应字段:
// 获取关联文档的ObjectId > dbRef.toJSON().$id ObjectId("...") // 获取关联的集合名称 > dbRef.toJSON().$ref publishers
内容的提问来源于Stack Exchange,提问作者Marv
相关产品推荐
相关产品推荐

