2011-02-17 29 views
0

我試圖創建一個複合關鍵字作爲我的「_id」字段,它需要一些地理信息以及其他屬性。它看起來是這樣的:您可以在Mongo的單個字段上創建多個索引嗎?這是什麼樣子?

{_id: {lat: 50, lon: 50, name: "some name"}} 

創建文檔後,蒙戈默認會分配一個指標,而忽略我的命令

db.coll.ensureIndex(_id: "2d") 

有沒有辦法做到這一點,所以我可以有我的_id字段索引可以通過地理索引和常規索引?

回答

1

您有兩種選擇。他們都需要在模式的變化:

  1. _id一個唯一的哈希,並把你的座標,在一個單獨的領域有二維指數:

    {_id:「標準的ObjectId或你的哈希」名稱: 「有些名」,LOC:[50,50]}

  2. 如果你真的想_id是唯一場(我不會推薦):

    {_id:{名稱:「某些名字「,loc:[50,50]}}

    db.coll.ensureIndex({ '_ id.loc': '2D'})

0

從MongoDB的文檔:

歡迎廣大用戶使用自己的約定創建一個ID ; _id值可以是任何類型,除了數組以外,只要它是唯一的。不允許數組,因爲它們是Multikeys。

你也必須確保它們也是唯一的。此外,這將混淆一些東西,假定你有一個BSON ID

我只是索引這些領域自己並建立一個複合索引。

http://www.mongodb.org/display/DOCS/Object+IDs

相關問題