gpt4 book ai didi

javascript - MongoDB 元素顺序

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:32 25 4
gpt4 key购买 nike

我的应用程序有一个游戏列表。每个游戏都有一个位置(向用户显示的顺序:1、2、3...)。

我使用 MongoDB 来保存所有数据。好的,现在我以 4 号位置的游戏为例。我想将其更改为位置 1。那么我需要做什么?

我需要将 MongoDB 中该游戏的字段位置从 4 更新为 1,并对该集合中位置 1 之后的所有文档进行增量。

但我认为这不是一个好主意!也许您有如何以更好的方式实现它的想法?谢谢!

mongo 表示例:

_id             | name    | description      | position |
________________________________________________________
ObjectId("...") | bubble | some description | 1
ObjectId("...") | bubbleA | some description | 2
ObjectId("...") | bubbleB | some description | 3
ObjectId("...") | bubbleC | some description | 4
ObjectId("...") | bubbleD | some description | 5
ObjectId("...") | bubbleE | some description | 6
ObjectId("...") | bubbleF | some description | 7

所以现在在我的网站上,我按顺序显示游戏:bubble -> bubbleA -> bubbleB -> bubbleC...现在我想在我的网站游戏中按顺序显示: bubbleC -> bubbleA -> bubbleB -> bubble...因此,要做到这一点,我需要将表中“bubbleC”的“位置”字段更新为“1”,并在名称为“bubble”的文档之后增加所有文档的所有其他“位置”。但这是个坏主意。那么如何做得更好呢?

最佳答案

如果您的文档数量相对较少并且位置变化不大,那么您的方法还不错。

作为替代方案,您可以将位置元数据存储在单独的数组中。位置更新只会涉及一份文档。基本Python示例:

def move(positions, old_index, new_index):
element = positions.pop(old_index)
positions.insert(new_index, element)
return positions

# Fetch array from MongoDB (or from anywhere really)
positions = [
{ '_id': 'ObjectId("...")', 'name': "bubble", 'description': "some description" },
{ '_id': 'ObjectId("...")', 'name': "bubbleA", 'description': "some description" },
{ '_id': 'ObjectId("...")', 'name': "bubbleB", 'description': "some description" },
{ '_id': 'ObjectId("...")', 'name': "bubbleC", 'description': "some description" },
{ '_id': 'ObjectId("...")', 'name': "bubbleD", 'description': "some description" },
{ '_id': 'ObjectId("...")', 'name': "bubbleE", 'description': "some description" },
{ '_id': 'ObjectId("...")', 'name': "bubbleF", 'description': "some description" }
]

old_index = 3
new_index = 0
move(positions, old_index, new_index)

# New positions:
#
# [{'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubbleC'}, <--
# {'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubble'},
# {'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubbleA'},
# {'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubbleB'},
# {'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubbleD'},
# {'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubbleE'},
# {'_id': 'ObjectId("...")', 'description': 'some description', 'name': 'bubbleF'}]

编写一个小辅助函数将有助于通过 _idname 移动元素。

关于javascript - MongoDB 元素顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25036089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com