【问题标题】:What is the difference between id and _id in mongoose?猫鼬中的id和_id有什么区别?
【发布时间】:2013-03-21 09:29:55
【问题描述】:

猫鼬中的_idid 有什么区别?哪个更适合参考?

【问题讨论】:

    标签: javascript node.js mongodb mongoose database


    【解决方案1】:

    来自documentation

    默认情况下,Mongoose 会为您的每个模式分配一个 id virtual getter 它将文档 _id 字段转换为字符串,或者在这种情况下 ObjectIds,它的 hexString。

    因此,基本上,id getter 返回文档_id 的字符串表示形式(默认情况下添加到所有 MongoDB 文档中,默认类型为 ObjectId)。

    关于什么更适合引用,这完全取决于上下文(即,您想要ObjectId 还是string)。例如,如果比较 id's,字符串可能更好,因为ObjectId's 不会通过相等性测试,除非它们是相同的实例(不管它们代表什么值)。

    【讨论】:

    • 请查看修改后的问题
    • 至于什么更适合引用,这完全取决于上下文(即,您想要ObjectId 还是string)。例如,如果比较id's,字符串可能更好,因为ObjectId's 不会通过相等性测试,除非它们是相同的实例(不管它们代表什么值)。
    • @jmar777 ObjectId 确实有一个equals 方法,可用于比较。
    • 注意嵌套文档。 Mongoose 不会将 id 虚拟分配给嵌套对象,即使它们有一个带有 ObjectId 的 _id 字段。
    • @EladNava 这是否意味着如果您希望一个文档引用另一个文档,您应该为引用 _id 字段的模型分配一个自定义字段?
    猜你喜欢
    • 2021-08-07
    • 2019-06-02
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多