MongoDB ids是否默认排序,以及所有ID是否都是唯一的?

时间:2015-10-31 16:04:17

标签: android mongodb sorting binary-search

我在MongoDB中对我的Android应用程序有疑问,首先是“_id”默认情况下在Mongo中创建的唯一与否,我认为它必须是唯一的,但我在某处看到它有某些情况它会不是唯一的,所以如何让它在默认情况下是唯一的?

第二个疑问我实际上在我的应用程序中,当用户提出问题然后我用user_id将该问题的“_id”存储在user_upvotes集合中并在数组中推送“_id”。当我加载所有当前问题时,我必须在用户的upvotes数组中检查该用户是否通过将该问题“_id”与用户数组中的所有值匹配而对其进行了评价。

我的问题是,如果我知道如果所有“_ids”都是按照mongoDB的排序顺序创建的话我认为减少这个搜索时间,那么我将使用二进制搜索算法来减少时间,但我不知道它是否按顺序排列。

此外,如果默认情况下MongoDB本身不创建唯一的“_ids”,那么我不能使用二进制搜索,并且必须为问题制作自己独特的ID?

1 个答案:

答案 0 :(得分:1)

  1. MongoDB集合的默认<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true"> <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/allow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/TextView01" android:text="Allow"/> <Button android:id="@+id/deny" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/allow" android:layout_alignTop="@id/allow" android:text="Deny"/> </RelativeLayout> 类型为_id,在该集合中为guaranteed to be unique
  2. 在数组中推送ObjectId不会对数组进行排序。数组按照您推送到它的项目的顺序排序。
  3. 通常,您最好不要查询MongoDB,因此依赖其搜索算法,而不是自己实现二进制搜索。