mongooseJS在数组中查找ID为的文档

mongooseJS在数组中查找ID为的文档,mongoose,Mongoose,我需要撤回ID存储在ObjectID数组中的文档 所以我有一个id 123,我想要所有的文档,其中租户有一个数组元素123 数据如下所示 { "_id": ObjectId("abc"), "name": "Miroslav", "tenants": [ ObjectId("123"), ObjectId("456") ] } { "_id": ObjectId("abd"), "name": "Lothar", "tenants": [ O

我需要撤回ID存储在ObjectID数组中的文档 所以我有一个id 123,我想要所有的文档,其中租户有一个数组元素123

数据如下所示

{
  "_id": ObjectId("abc"),
  "name": "Miroslav",
  "tenants": [
    ObjectId("123"),
    ObjectId("456")
  ]
}

{
  "_id": ObjectId("abd"),
  "name": "Lothar",
  "tenants": [
    ObjectId("123"),
    ObjectId("694")
  ]
}
当然是mongoDB systax

things.find( { 'tenants': ObjectId(123) } )
很好用

猫鼬抱怨

ReferenceError: ObjectId is not defined
所以我试过这个

things.find( { 'tenants': mongoose.Schema.ObjectId(123) } )
在一次集市交易中,猫鼬返回了所有的记录,除了预期的2张

我在3年前看到过这个问题,但那个帖子并没有答案,希望这里的人能找到解决办法

我正在使用mongoose:4.9.8,因为一个特定的“承诺”问题,我现在无法升级版本

thx

rakan316-


试试这个:things.find{tenants:mongoose.Types.ObjectId123}

这就成功了

rakan316,如果你把这个作为一个答案,我会让它正确,然后投票表决。 Thx,如果你知道的话,我想知道原因。

Rakan写道-


试试这个:things.find{tenants:mongoose.Types.ObjectId123}

这就成功了

rakan316,如果你把这个作为一个答案,我会让它正确,然后投票表决。
Thx,如果您知道的话,我想知道原因。

要转换为ObjectId,您需要使用:

things.find({tennants: mongoose.Types.ObjectId("123")});
mongoose.Schema.ObjectId和mongoose.Types.ObjectId之间的区别在于后者是ObjectId构造函数。它甚至可以像这样使用:

var id = new mongoose.Types.ObjectId("123");
创建objectId并将其存储在id变量中

而mongoose.Schema.ObjectId或mongoose.Schema.Types.ObjectId指的是数据类型。这就是您将在模式中使用的内容。和你设定的一样

name: String
在架构中,可以使用mongoose.schema.Types.ObjectId指定数据类型为mongoose ObjectId


注意:我记得几个月前在文档中读过这篇文章,但我现在找不到文档,我认为我的解释相当充分,尽管要转换为ObjectId,您需要使用:

things.find({tennants: mongoose.Types.ObjectId("123")});
mongoose.Schema.ObjectId和mongoose.Types.ObjectId之间的区别在于后者是ObjectId构造函数。它甚至可以像这样使用:

var id = new mongoose.Types.ObjectId("123");
创建objectId并将其存储在id变量中

而mongoose.Schema.ObjectId或mongoose.Schema.Types.ObjectId指的是数据类型。这就是您将在模式中使用的内容。和你设定的一样

name: String
在架构中,可以使用mongoose.schema.Types.ObjectId指定数据类型为mongoose ObjectId


注意:我记得几个月前在文档中读过这篇文章,但我现在找不到文档,我认为我的解释是相当充分的,尽管

你能显示模式的tennants部分吗?租户是用户-父/子关系…租户id指的是不同文档的_id。试试这个:things.find{tenants:mongoose.Types.ObjectId123}您可以显示模式的tennants部分吗?租户是用户-父/子关系…租户id引用不同文档的_id。请尝试以下操作:things.find{tenants:mongoose.Types.ObjectId123}给我一秒钟,让我再次找到文档,然后我会发布一份完整的答案给我一秒钟,让我再次找到文档,然后我会发布一份完整的答案,足够让我在挖掘时知道我在读什么。谢谢。足够让我在挖掘时知道我在读什么。谢谢。