2016-01-22 124 views
1

字段的值賦給另一個假設你有一個蒙戈記錄:如何在一個蒙戈查詢

{ 
    _id : 1234, 
    x: 12, 
    y: 34 
} 

我需要一個查詢,將在這樣一種方式更新特定_id是

x = y;//assign the value of y to x 
y = new Date().getTime();//assign current time to y 

對於特定的_id.current.current我正在讀取修改實體和更新它的id。是否有可能在單個查詢中做到這一點?什麼是它使用貓鼬

回答

1

你不能這樣做,除非你使用$where運算符。但是你應該避免這樣做,因爲在documentation提到使用$where可能會導致性能的降低:

$其中評估JavaScript和不能採取索引的優勢。因此,使用標準MongoDB運算符(例如$ gt,$ in)表達查詢時,查詢性能會提高。

db.collection.update({ '$where': function() { return this.x === this.y }}, 
    {'$set': { 'y': new Date().getTime() }} 
) 

,最好的辦法就是像你這樣跑兩個查詢。一個檢索_id值,另一個更新您的文檔。

您無法使用單個MongoDB查詢將y的值分配給xnew Date().getTime()y。您需要先使用.findOne()方法檢索y值,然後使用其他查詢更新文檔。

var y = db.collection.findOne({ '_id': <given ObjectId()> }, 
    { 'y': 1, '_id': 0 } 
)['y']; 

db.collection.update({ '_id': <given ObjectId()> }, 
    { '$set': { 'x': y, 'y': new Date().getTime() } } 
)