【问题标题】:Mongoose - Defining child's ObjectID in another SchemaMongoose - 在另一个模式中定义孩子的 ObjectID
【发布时间】:2014-12-13 00:47:53
【问题描述】:

有一个类似的线程@Mongoose variable key name。然而,他采用了另一种方法而不是解决这个问题。另一种方法是我标题的 OR 部分。

编辑 - 忽略此部分,我现在正在使用替代方案。现在的问题在于在其他地方引用孩子的对象 ID。

我有以下数组:

selections: [{
   4433d18d31f3775756ac2a70: "542e91aa31f3775756abccda"},
   {4433d18d31f3775756ac2a71: "542e916c31f3775756abccd8"},
   {4433d18d31f3775756ac2a72: "542e934231f3775756abccdb"
}]

我的架构目前如下:

selections: {
    <something>: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Selection'
    }
}

&lt;something&gt; 的地方,有没有一种方式可以表达“我不在乎这里有什么”?

或者,因为这在搜索互联网后似乎不可能,我可以有以下架构:

selections: {
    pid: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Competition.CHILD'
    }
    selection: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Selection'
    }
}

但这里的问题是,在 &lt;something&gt; 是架构竞赛中的子架构时使用的 ObjectID,我无法找到对 Object ID 这么说的方式。

请提供任何建议/帮助。理想情况下,我更喜欢第一个解决方案,但我知道这可能是不可能的。谢谢!

【问题讨论】:

    标签: node.js mongodb mongoose database-schema objectid


    【解决方案1】:

    使用带有可选(但固定)键的对象数组:

    selections: [{
      selection: {type: ObjectId, ref: 'Selection'},
      child: {type: ObjectId, ref: 'Competition.CHILD'}
    }]
    

    这将使您能够进行更好的查询、使用猫鼬种群等。

    【讨论】:

    • 好的,谢谢,这样看起来简单多了。那么对于我问题的第二部分,如何将 ObjectId 定义为孩子的 ObjectID?例如我的Competition 架构具有以下条目:selChild: [selChildSchema],并且孩子的 ObjectId 将是 selChild._id。
    • 我会尝试ref: 'Competition.selChild',但我自己没有使用过这样的设置,所以我不能自信地说这是否真的适用于猫鼬种群(这是指定@的唯一真正目的987654325@AFAIK)。
    • Competition.selChild 没有用,但你说得对,它只用于我所看到的人口,所以它实际上不应该影响任何东西。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2020-05-24
    • 2016-06-12
    • 2019-07-18
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多