mongodb-如何过滤查找结果
我是Mongodb的新手。
我的查找给了我以下结果,如何通过下面的结果过滤以获取endivy_delivery_time
,使用mongoDB汇总:
[
{
"from":"Jeddah",
"delivery_rule":[
{
"to":"Makkah",
"expected_delivery_time":3
},
{
"to":"Riyadh",
"expected_delivery_time":2
}
]
},
{
"from":"Riyadh",
"delivery_rule":[
{
"to":"Makkah",
"expected_delivery_time":3
},
{
"to":"Riyadh",
"expected_delivery_time":1
}
]
}
]
以下是我的代码:
{
$lookup:
{
from: "Setting",
pipeline: [
{
$match: {
$expr: {
{ $eq: ["$name", "delivery_rules"] }
}
}
],
as: "delivery_rules"
}
},
{ "$match": { "$delivery_rules.value.from": "Jeddah" } },
{ "$match": { "$delivery_rules.value.to": "Riyadh" } },
我需要在MySQL下方的帮助,等于:
SELECT 'expected_delivery_time' WHERE from='Jeddah' AND to='Makkah'
I'm new to MongoDB.
My lookup gives me the following result, how can I filter through the results below in order to get expected_delivery_time
, using MongoDB aggregate:
[
{
"from":"Jeddah",
"delivery_rule":[
{
"to":"Makkah",
"expected_delivery_time":3
},
{
"to":"Riyadh",
"expected_delivery_time":2
}
]
},
{
"from":"Riyadh",
"delivery_rule":[
{
"to":"Makkah",
"expected_delivery_time":3
},
{
"to":"Riyadh",
"expected_delivery_time":1
}
]
}
]
Below is my code:
{
$lookup:
{
from: "Setting",
pipeline: [
{
$match: {
$expr: {
{ $eq: ["$name", "delivery_rules"] }
}
}
],
as: "delivery_rules"
}
},
{ "$match": { "$delivery_rules.value.from": "Jeddah" } },
{ "$match": { "$delivery_rules.value.to": "Riyadh" } },
I need help with below MySQL equivalent to:
SELECT 'expected_delivery_time' WHERE from='Jeddah' AND to='Makkah'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
基于
$查找
阶段,我预计结果文档应为:delivery_rules
(带有“ s”,但是您共享的文档均为delivery_rule_rule
)两个$ 对
delivery_rules.value.value.from
和delivery_rules.value.to
不存在。而且,您不应根据查询使用$ Match
阶段中的字段。$ lookup
$ match
- filter 来自和velivery_rules.to
。组合2$ match
阶段到1。$ project
- 装饰输出文档。添加endure_delivery_time
字段:3.1。
$ getfield
- getendure_delivery_time
从结果 3.1.1。3.1.1。
$ first
- 从结果 3.1.1.1 array中获取第一个值。3.1.1.1。
$ filter
- 用to
过滤文档是velivery_rules
array中的“麦加”。示例mongo playground
Based on the
$lookup
stage, I expected the result documents should be:delivery_rules
(with "s", but the document you shared is withdelivery_rule
)Both
delivery_rules.value.from
anddelivery_rules.value.to
don't exist. And you shouldn't use$
for the field in$match
stage based on your query.$lookup
$match
- Filterfrom
anddelivery_rules.to
. Combine 2$match
stages into 1.$project
- Decorate output document. Addexpected_delivery_time
field:3.1.
$getField
- Getexpected_delivery_time
field from the result 3.1.1.3.1.1.
$first
- Get the first value from the result 3.1.1.1 array.3.1.1.1.
$filter
- Filter the document withto
is "Makkah" indelivery_rules
array.Sample Mongo Playground