簡體   English   中英

給定特定記錄,檢索MongoDB集合中的上一個記錄

[英]Given a particular record, retrieving the previous one in a MongoDB collection

我剛開始使用MongoDB。

我需要檢索MongoDB集合中給定記錄的先前記錄。

  1. 是否可以通過“ _id = ObjectId(...)”字段來執行此操作?
  2. 如果不是,我們是否必須顯式地插入具有順序值的鍵來標識給定記錄的先前記錄? (假設當前集合中沒有順序的鍵/值對)

將不勝感激任何幫助。 謝謝。

在所有條件都相同的情況下, _id字段的默認值是一個ObjectId並且是單調的,或者一直在增加。

這意味着,給定一個已知的ObjectId值,則滿足以下條件,以檢索緊接在其之前插入的文檔:

db.collection.find(
    { "_id": { "$lt": ObjectId("538c271a19b3a188ca6135eb") }}
).sort({ "_id": -1 }).limit(1)

那是一般情況。 唯一可能的變化是,各種源都在生成ObjectId值,並且它們的時鍾設置為不同的時間(如完全不同的UTC時間)。

這樣一來,再加上插入率,您就可以考慮這是否對您足夠好,除了罕見和管理不善的情況外,永遠都不能總是保持訂單狀態。

我可以建議使用索引以獲得最佳性能。

例如: 創建索引:

db.books.ensureIndex({book: 1}) // for next records in collection
db.books.ensureIndex({book: -1}) // for previous records in collection

下一個查詢如下:

db.books.find({book: {$gt:"a"}}).sort({book: 1}).hint({book: 1}).limit(1)

上一個查詢如下:

db.books.find({book: {$lt:"b"}}).sort({book: -1}).hint({book: -1}).limit(1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM