[英]MongoDB: How to Sort a Query Before Updating
我正在編寫一個在后端使用MongoDB的Meteor(Node.js)應用程序。 在我的代碼中的某個點,我需要更新集合中的特定文檔。 我需要使用Mongo的update()方法,但是我無法通過正確的(復雜的)查詢來縮小到特定文檔的范圍。 我想要更新的文件是:
db.collection.find({market: 'AAA'}).sort({creationDate:-1}).limit(1)
換言之, collection
中具有AAA
市場並且最近創建的一個文檔(creationDate是UNIX時間戳編號,例如1408829429914
)。 有多個市場為AAA
文檔,所以我使用sort()和limit(1)來查找最近創建的文檔。
在更新過程之前,Mongo的update()似乎不接受排序參數作為查詢的一部分。 我該怎么做才能縮小到這個文檔並進行更新? 謝謝!
您需要獲取所需的文檔,然后通過_id
更新它。 如果您的館藏名為Markets
,代碼如下:
var market = Markets.findOne({market: 'AAA'}, {sort: {creationDate:-1}});
Markets.update(market._id, {$set: {fancy: true}});
值得一提的是,即使MongoDB支持您正在尋找的優化,流星客戶端代碼也只能通過_id
更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.