【发布时间】:2021-11-20 03:04:54
【问题描述】:
两个包含ObjectId("6148a371c13a6a0be492ebf4")的文档
文档 1
{
"_id" : ObjectId("6144f66fb9543917f96fc"),
"refId" : "ford",
"template" : "6144f61cb96d772317f96f9",
"fieldValues" : {
"PDV" : [
"6126938cd24a8aa3d37b4992",
ObjectId("6148a371c13a6a0be492ebf4")
]
},
"group" : ObjectId("6144f66fb96d7731917f96fd"),
"createdAt" : ISODate("2021-09-17T20:11:27.440Z"),
"updatedAt" : ISODate("2021-09-20T15:06:26.146Z"),
"__v" : 0
}
文档 2
{
"_id" : ObjectId("6144f66fb96d77rr3217f96fc"),
"refId" : "CCM",
"template" : "6144f613296d7731917f96f9",
"fieldValues" : {
"DDB" : [
"6126938cd2448aa3d37b4992",
"5443938cd2448aa3d37b4992",
ObjectId("6148a371c13a6a0be492ebf4"),
]
},
"group" : ObjectId("6144f66fb96de431917f96fd"),
"createdAt" : ISODate("2021-09-17T20:11:27.440Z"),
"updatedAt" : ISODate("2021-09-20T15:06:26.146Z"),
"__v" : 0
}
我们寻找的ObjectId 总是在fieldValues 内部,但我们总是有不同的命名而不是PDV 或DDB。
所以我们不能使用这种类型的查询:
db.getCollection('products').find({"fieldValues.PDV":ObjectId('6148a371c13a6a0be492ebf4')})
附言。这个查询应该只在数据库上工作,我们不能查询所有产品并在后端进行计算,可能会有数百万个产品。
【问题讨论】:
-
具体条件是什么?
ObjectId("6148a371c13a6a0be492ebf4")可能出现在文档中任何地方?拥有一个包含不同数据类型元素的数组(PDV 或 DDB)会变得相当复杂。 -
谢谢 Wernfried Domscheit,很好,我刚刚更新了我的问题。
-
“我们无法查询所有产品并进行计算” - 这正是您对查询所做的。
-
Wernfried Domscheit 是的,我删除了这个查询示例,因为它是错误的,只会让人们感到困惑。