1
我發現通過MongoDB的我的方式,並有一個包含這種形狀的一些文件集合的標準:檢索多個(轉化)值在MongoDB中組匹配從組本身
{
"_id" : ObjectId("547a13b70dc5d228db81c475"),
"INSTRUMENT" : "InstrumentA",
"BID" : 5287,
"ASK" : 5290,
"TIMESTAMP" : ISODate("2014-10-01T23:57:27.137Z")
}
{
"_id" : ObjectId("547a0da20dc5d228db2f034d"),
"INSTRUMENT" : "InstrumentB",
"BID" : 0.88078,
"ASK" : 0.88098,
"TIMESTAMP" : ISODate("2014-10-01T23:58:59.637Z")
}
什麼我期待得到是最後一個已知的中間(BID + ASK)/2
之前給定的ISODate每個INSTRUMENT
。我得到了最後一個儀器信息的時間和最後一個儀器的最後一個值。儘管以下看起來像是有效的,但lastOccurance
正在被儀器污染。
db.runCommand(
{
group:
{
ns: 'collectionTest',
key : { INSTRUMENT : 1} ,
cond: { TIMESTAMP: { $lte: ISODate("2014-10-01 08:30:00") } } ,
$reduce: function(curr, result) {
if(curr.TIMESTAMP > result.lastOccurance)
{
result.lastOccurance = curr.TIMESTAMP;
result.MID = (curr.BID + curr.ASK)/2;
result.INSTRUMENT = curr.INSTRUMENT;
}else
{
result.lastOccurance = null;
result.MID = null;
result.INSTRUMENT = null;
}
},
initial: { lastOccurance : ISODate("1900-01-01 00:00:00") }
}
}
)
如果有人能看到此代碼的修復程序,請讓我知道。
謝謝你的提示! – 2014-12-14 04:01:18