簡體   English   中英

MongoDB:如何在更新之前對查詢進行排序

[英]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.

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