2016-10-24 33 views
4

我想限制Rethinkdb查詢內嵌套對象的數量。假設我有嵌套消息的對話。限制嵌套對象導致rethinkdb查詢

[交談]

[{ 
    id: "fgh675", 
    name: "Some conversation", 
    messages: [{ 
     id:"jhu432", 
     contents: "Hello world!", 
     createdAt: "2016-01-01 00:01:01" 
    }, 
    { 
     id:"bgj876", 
     contents: "Hello earth", 
     createdAt: "2016-01-01 00:01:01" 
    }] 
}] 
  1. 我怎樣才能限制消息的對象的數量?

  2. 事件更好,我怎麼能寫一個查詢只返回最後一條消息.merge(function(c) { return {msg: c("messages").slice(-1)}; }),但我無法找到如何先排序消息...(如果有很多消息,該查詢是否有效)?

回答

2

limit可以限制消息的數量:

conversations.merge(conversation => { 
    messages: conversation('messages').limit(3) 
}) 

orderBy可用於對數組進行排序:

conversations.merge(conversation => { 
    messages: conversation('messages').orderBy('createdAt') 
}) 

如果您對每個查詢的消息進行排序,它可能是更有效地存儲已經排序的消息列表。