我需要拉回 ID 存储在 ObjectIds 数组中的文档,所以我有一个“id”(123),我想要所有“租户”的数组元素为(123)的文档
数据看起来像这样
{
"_id": ObjectId("abc"),
"name": "Miroslav",
"tenants": [
ObjectId("123"),
ObjectId("456")
]
}
{
"_id": ObjectId("abd"),
"name": "Lothar",
"tenants": [
ObjectId("123"),
ObjectId("694")
]
}
Run Code Online (Sandbox Code Playgroud)
当然是 mongoDB 系统税
things.find( { 'tenants': ObjectId(123) } )
Run Code Online (Sandbox Code Playgroud)
工作得很好。
猫鼬抱怨
ReferenceError: ObjectId is not defined
Run Code Online (Sandbox Code Playgroud)
所以我试过这个
things.find( { 'tenants': mongoose.Schema.ObjectId(123) } )
Run Code Online (Sandbox Code Playgroud)
在集市上,猫鼬返回了除预期的 2 之外的所有记录。
我在 3 年前看到过这个问题,那个帖子没有答案,希望这里有人能有解决方案。
我使用“猫鼬”:“4.9.8”(由于特定的“承诺”问题,目前我无法升级版本)
谢谢
小智 6
要转换为 ObjectId,您需要使用:
things.find({tennants: mongoose.Types.ObjectId("123")});
Run Code Online (Sandbox Code Playgroud)
mongoose.Schema.ObjectId 和 mongoose.Types.ObjectId 的区别在于后者是 ObjectId 构造函数。它甚至可以像这样使用:
var id = new mongoose.Types.ObjectId("123");
Run Code Online (Sandbox Code Playgroud)
创建一个 objectId 并将其存储在 id 变量中。
而 mongoose.Schema.ObjectId(或 mongoose.Schema.Types.ObjectId)指的是一种数据类型。这就是您在架构中使用的内容。与您可能设置的方式相同
name: String
Run Code Online (Sandbox Code Playgroud)
在架构中,您使用 mongoose.Schema.Types.ObjectId 来指定数据类型是 mongoose ObjectId。
注意:我记得几个月前在文档中读过这个,但我现在找不到文档了,我认为我的解释是相当充分的
| 归档时间: |
|
| 查看次数: |
5412 次 |
| 最近记录: |