mongodb - 直观相似的查询会导致不同的结果
问题描述
在sample_training
数据库、companies
集合中,有如下数据:
练习:sample_training.companies
集合中有多少家公司在“西雅图”市设有办事处?
我想到的查询是使用点表示法,如下所示:
db.companies.find({ "offices.0.city": "Seattle" }).count()
这返回110
。
但是,该站点将以下查询作为正确的查询
db.companies.find({ "offices": { "$elemMatch": { "city": "Seattle" } } }).count()
这返回117
。
我检查了我的查询似乎也可以正常工作,但我不知道为什么它们的结果不同。
解决方案
不同之处在于您只查看数组中的第一个元素(索引 0)。您正在指定要查看的索引。
意思是,如果我们有以下数据库:
[
{
"offices": [
{
"city": "Dallas"
},
{
"city": "Jacksonville"
}
]
}
]
使用以下查询:
db.collection.find({
"offices.0.city": "Jacksonville"
})
它什么也不会返回。
然而,如果我们使用此查询,则元素不必是第一个索引。
db.collection.find({
"offices": {
"$elemMatch": {
"city": "Jacksonville"
}
}
})
现场演示:
推荐阅读
- wordpress - Woocommerce - 以编程方式添加折扣后 update_order_review 变为 502
- python - 使用 Python 从 Azure 容器读取文件的动态文件路径?
- javascript - 仅使用 javascript 和 html 为 json API 创建搜索栏?
- python-3.x - 你可以通过 pygithub 删除一个 repo 吗?
- python-3.x - 如何在另一个列表中获取列表的值?
- perl - 如何使用 perl 提升文件夹级别?
- c# - 集成docusign并生成访问令牌c#
- python - 如何在 pandas DataFrame 的每一行上运行一个函数
- html - 为什么添加 CSS 后两个 html 元素没有对齐?
- wpf - 展开/折叠时如何使扩展器的图标移动到边缘