首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修正数据post API调用来修复不一致,比如排印?

修正数据post API调用来修复不一致,比如排印?
EN

Stack Overflow用户
提问于 2021-04-20 19:51:23
回答 1查看 21关注 0票数 1

好的,这将是一个复杂的问题,我希望我说的很清楚。完全入场,我昨天刚刚完成了一个训练营,所以我不知道有很多技术,我想我可能需要额外的技术来完成我想要的……

现在,我有一个应用程序,它使用bandsintown API调用来填充数据库。我注意到,bandsintown与每个对象中的数据返回不一致,这使得检索对象后的操作变得困难/似乎不可能。例如,在同一地点表演的不同艺术家返回不同的纬度、经度、场地名称等。

这里是Primus在Bonnaroo玩:

代码语言:javascript
运行
复制
{
"offers": [],
"venue": {
"country": "United States",
"city": "Manchester",
"latitude": "35.4839582",
"name": "Bonnaroo Music and Arts Festival 2020",
"location": "",
"region": "TN",
"longitude": "-86.08963169999998"
},
"datetime": "2020-09-25T12:00:00",
"on_sale_datetime": "",
"description": "",
"lineup": [
"Primus"
],
"bandsintown_plus": false,
"id": "1020701795",
"title": "",
"artist_id": "1263",
"url": "https://www.bandsintown.com/e/1020701795?app_id=451f31b2808001d069daed45c32a9dac&came_from=267&utm_medium=api&utm_source=public_api&utm_campaign=event"
}

与每周在Bonnaroo的比赛相比:

代码语言:javascript
运行
复制
{
"id": "18604416",
"url": "https://www.bandsintown.com/e/18604416?app_id=451f31b2808001d069daed45c32a9dac&came_from=267&utm_medium=api&utm_source=public_api&utm_campaign=event",
"datetime": "2017-05-17T19:00:00",
"title": "",
"description": "",
"venue": {
"location": "",
"name": "Bonnaroo",
"latitude": "35.476247",
"longitude": "-86.081026",
"city": "Manchester",
"country": "United States",
"region": "TN"
},
"lineup": [
"The Weeknd"
],
"offers": [],
"artist_id": "1371750",
"on_sale_datetime": "",
"bandsintown_plus": false
}

我现在的问题是我希望聚合和$group中的MongoDB,因为这两个事件在Bonnaroo,但对象{venue.name}是不一样的.甚至经纬度也不一样所以我也不能用。我想知道是否有一种方法可以自动更改对象的数据,而不必进入DB并编辑单个对象。这两个事件都包括单词Bonnaroo,所以我可以找到一些东西并匹配文本,然后分割出不相似的文本吗?如果是这样的话,我可以使用匹配的场地名称字段作为引用来更改纬度和经度值吗?

我希望我是清楚的,如果我不是的话,随时可以问一些澄清性的问题。这个网站已经帮了我很多次了,我很感激社区为互相帮助所付出的一切努力!提前谢谢!

~编辑~感谢您的第一个回复@morad。

因此,在看到您的答复之前,我能够构建一些内容,将数据分解为一个数组,这与您提供的内容相同。唯一不起作用的是索引的$arrayToElem,因为有一些场所:

  • 有多个单词名(例如石头小马)
  • 在实际场地名称之前有单词(在一个类似于"Verizon at that“的结果中看到了)

使用这个Bonnaroo示例,我有一个新字段,将每个单词作为数组中的值返回:

代码语言:javascript
运行
复制
"venueName": ["Bonnaroo", "Music", "and","Arts","Festival","2020"] 

我的下一步将是比较'Primus‘对象和'The Weeknd’对象的venueName,找出数组中的值是相同的,并将它们返回到"venueName“的值。

希望这更有意义,我感谢你的投入!

EN

回答 1

Stack Overflow用户

发布于 2021-04-20 20:52:13

实际的诀窍取决于您的数据,如果您提供的数据没有描述整个问题,您应该提供更多的数据。

换句话说,你想潜入多深的地方。

最愚蠢的答案,至少是你提供的数据

代码语言:javascript
运行
复制
db.prod4.aggregate([
  {
    $addFields: {
      venueName: {
        $arrayElemAt: [{ $split: ['$venue.name', ' '] }, 0],
      },
    },
  },
])

当然不是这样,我想到的是同一地点的地理位置不应该离对方很远,例如,你提供的两个地点的数据是在1.16公里内。

因此,另一个可行的虚拟解决方案是编写一个简单的脚本,从所有数据的数组中选择一个随机元素,并查找数据,例如lat/lng在该点的2公里内,并从数组中删除这些元素,并从数组中选择另一个随机元素,并执行相同的操作。

如果您提供更多的数据,它将更容易,因为最简单的解决方案是找到许多模式,并只为它们进行规划。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67185476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档