【发布时间】:2021-02-21 09:19:39
【问题描述】:
{
"_id" : ObjectId("5fa919a49bbe481d117506c9"),
"isDeleted" : 0,
"productId" : 31,
"references" : [
{
"_id" : ObjectId("5fa919a49bbe481d117506ca"),
"languageCode" : "en",
"languageId" : 1,
"productId" : ObjectId("5fa919a49bbe481d117506ba")
},
{
"_id" : ObjectId("5fa91cc7d7d52f1e389dee1f"),
"languageCode" : "ar",
"languageId" : 2,
"productId" : ObjectId("5fa91cc7d7d52f1e389dee1e")
}
],
"createdAt" : ISODate("2020-11-09T10:27:48.859Z"),
"updatedAt" : ISODate("2020-11-09T10:27:48.859Z"),
"__v" : 0
},
{
"_id" : ObjectId("5f9aab1d8e475489270ebe3a"),
"isDeleted" : 0,
"productId" : 21,
"references" : [
{
"_id" : ObjectId("5f9aab1d8e475489270ebe3b"),
"languageCode" : "en",
"languageId" : 1,
"productId" : ObjectId("5f9aab1c8e475489270ebe2d")
}
],
"createdAt" : ISODate("2020-10-29T11:44:29.852Z"),
"updatedAt" : ISODate("2020-10-29T11:44:29.852Z"),
"__v" : 0
}
这是我的 mongoDB 集合,我在其中存储对产品集合的多语言引用。在 productId 中是对产品集合的引用。现在如果我们的请求中有 ar,那么我们将只有 ar 语言代码的 productId。如果该语言代码不存在,那么我们将有 en langCode productId。
例如,如果用户传递了 ar,那么查询应该返回
"productId" : ObjectId("5fa91cc7d7d52f1e389dee1e")
"productId" : ObjectId("5f9aab1c8e475489270ebe2d")
我已尝试将 $or 与 $elemMatch 一起使用,但无法获得所需的结果。我也在考虑使用$cond。谁能帮我构建查询。
【问题讨论】:
标签: database mongodb mongoose mongodb-query aggregation-framework