【问题标题】:How do I do sort based on specific position within an Array with MongoDB?如何使用 MongoDB 根据数组中的特定位置进行排序?
【发布时间】:2015-11-09 10:01:28
【问题描述】:

我的用例是这样的:

我有一些想搬到某些城市的人:

People {
  cities: ['London', 'Denver', 'Tokyo']
}

城市的顺序告诉我他们最喜欢哪个城市。上面的人最喜欢在伦敦。

我有一个房东,他有房子出租。这个人来自一个城市,比如London

我手头有这个地主,我想查询人物集合并按他们喜欢地主城市的顺序取回所有人物。所以对于这个房东来说,最喜欢伦敦的人应该先出现,其次才是喜欢伦敦的人次之,以此类推。

对于不同的房东,比如来自Denver 的房东,排序会改变,以给予最喜欢Denver 的人。

在 Mongo 本身中有什么方法可以做到这一点?

【问题讨论】:

  • 是他们每人仅有的三个城市还是这个数字是动态的?
  • @inspired 嗨,很抱歉回复晚了。该数字可以是动态的。

标签: mongodb database-administration


【解决方案1】:

就您的数据库现在的设置方式而言,我认为您能做的最好的事情就是根据数组中的第一项进行查询。所以楼主会把他的位置(本例中是伦敦)传递给这个方法调用。

// As an example
db.people.find({ "cities.0" : "London" })

【讨论】:

  • 但这只会搜索以伦敦为首选的人。我希望所有拥有伦敦的人都在名单上,但我希望他们在伦敦的任何位置都被排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多