【问题标题】:mongoose/mongoDB query by one field distinct by anothermongoose/mongoDB 查询由一个不同的字段
【发布时间】:2016-03-31 00:29:39
【问题描述】:

我有一个以以下文档为例的集合:

{
    _id: ObjectId("56fbf2210309775d6790c1c0"),
    city_id: 2600,
    street_name: "hamilton",
    branch: 6
}

是否可以按分支查询集合,但在 street_name 上使用 distinct?

谢谢!

【问题讨论】:

  • 您所说的“街道名称不同”是什么意思
  • 如果我通过branch 查询,我可以拥有多个具有相同street_name 的文档,例如:find({branch: 1})。我希望能够获取所有具有 branch: 1 的文档,但如果有的话,删除重复的 street_name

标签: mongodb mongoose


【解决方案1】:

如果您的意思是不同的,仅在唯一值中。

你可以使用

db.yourCollectionName.distinct("street_name") 

它返回一个数组。在您的情况下,您可以使用该数组作为输入并按分支进一步过滤。

mongodb 文档here

编辑 1:

或者,您可以将第二个参数传递给 distinct,

//db.collection.distinct(field, query) <-- check out docs.
db.yourCollectionName.distinct( "street_name", { branch: 1 } )

【讨论】:

  • 是否可以在 1 个查询中完成?
  • 是的,您也可以在不同的查询中添加第二个参数。
  • 当我这样做时,它只返回 street_name 而不是整个文档
  • 是的,它返回一个唯一值的数组。如果您想要整个文档,则需要提供您的逻辑,因为它们有多种执行方式 - 使用 aggregation pipelinesmapreduce 等。
  • 我的逻辑是:获取所有带有city_id: XXXbranch: YYY 的文档。这将返回具有相同street_name 的多个文档,我想删除这些文档,并且每个city_idbranch 只留下1 个street_namebranch
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 2018-09-04
  • 1970-01-01
相关资源
最近更新 更多