2014-01-30 77 views
3

我需要爲一個沒有到期[過期](不存在)或到期日期在2/2/14之後的帳戶查詢文檔。要做到這一點,我的MongoDB的查詢是:

db.events.find({ _account: ObjectId("XXXX"), 
    $or: [ 
     {expires: {$gt: ISODate('2014-02-02')}}, 
     {expires: {$exists: false}} 
    ] 
}); 

我在用正確的貓鼬.or().and().exists()鏈接的麻煩,我將如何轉換成貓鼬這個?

謝謝!

回答

7

使用相同的語法應該沒有問題,或多或少像shell一樣。它仍然是JavaScript,沒有殼幫助器。

Events.find({ _account: "XXXX", 
    $or: [ 
    {expires: {$gt: Date(2014,02,02)}}, 
    {expires: {$exists: false }} 
}, function(err, events) { 
    if (err) // TODO 
    // do something with events 
}); 

或者正在使用其他助手構建查詢:

var query = Events.find({ _account: "XXXX" }); 

query.or(
    {expires: {$gt: Date(2014,02,02)}}, 
    {expires: {$exists: false }} 
); 

query.exec(function(err, events) { 
    if (err) // TODO 
    // do something with events 
}); 

或者其他組合。這些'助手'主要存在於與Java等其他非動態語言進行語法平衡的驅動程序中。如果您喜歡這種方式,並且找不到節點引用,則可以在Java中查找QueryBuilder用法的示例。對於貓鼬而言,值得一看的查詢有documentation

動態語言有一個更原生的方法來定義用於查詢等這樣的對象結構等。因此,大多數人更喜歡使用它們。

+0

啊,太棒了 - 我以爲我不得不使用助手,不知道「或」是如何與原來的「發現」一起實施的。我將在今天晚些時候回到辦公室時嘗試這一點。 – justin

相關問題