use*_*188 0 collections mongodb node.js
查询 mongo 仅查找名称:以这种方式应该很快,即我不想获取每个文档,然后从每个文档中获取名称。
我是 mongo 的新手,db.company.find() --> 这将给出整个文档,该文档非常大
笔记 ; 我也使用了公司名称和独特条件的索引。soo --> 我认为它应该可以帮助我快速轻松地找到公司名称,但我不知道如何
这是集合
collection company : --> list of companies in the collection
{
{
"_id": "5b8ed214b460e7c17c5a33f9",
"company_location": "USA",
"company_name": "tesla", -----> COMPANY NAME: TESLA
"cars":
[
{---car 1---} ,
{---car 2---} ,
{---car n---}
],
},
{
"_id": "5b8ed214b460e7c17c5a33f9",
"company_location": "USA",
"company_name": "gmc", -----> COMPANY NAME :GMC
"cars":
[
{---car 1---} ,
{---car 2---} ,
{---car n---}
],
},
{
"_id": "5b8ed214b460e7c17c5a33f9",
"company_location": "USA",
"company_name": "bmw", -----> COMPANY NAME:BMW
"cars":
[
{---car 1---} ,
{---car 2---} ,
{---car n---}
],
},
{
"_id": "5b8ed214b460e7c17c5a33f9",
"company_location": "USA",
"company_name": "audi", -----> COMPANY NAME: AUDI
"cars":
[
{---car 1---} ,
{---car 2---} ,
{---car n---}
],
},
}
Run Code Online (Sandbox Code Playgroud)
所以 我只想要公司名称列表,而不是使用db.companies.find(). --> 然后通过遍历找到每个人的名字
我该怎么做:速度是必要的,数据很大
您可以使用.find()方法的第二个参数来指定投影:
db.companies.find({}, { _id: 0, company_name: 1 })
Run Code Online (Sandbox Code Playgroud)
返回:
{ "company_name" : "gmc" }
{ "company_name" : "tesla" }
...
Run Code Online (Sandbox Code Playgroud)
或者您可以使用聚合框架来获取具有名称数组的单个文档:
db.companies.aggregate([{ $group: { _id: null, company_names: { $push: "$company_name" } } }])
Run Code Online (Sandbox Code Playgroud)
返回:
{ "_id" : null, "company_names" : [ "gmc", "tesla", ... ] }
Run Code Online (Sandbox Code Playgroud)
如果您在 上有索引,第一个应该是最快的方法company_name。在这种情况下,您的查询不需要扫描集合,并且可以仅使用索引来获取查询数据(覆盖查询)。
| 归档时间: |
|
| 查看次数: |
3175 次 |
| 最近记录: |