天天看點

mongodb 從文檔的array字段中查詢滿足條件記錄

mongodb中存儲的結構可以是數組類型,但是如果數組太大,有時候沒有必要把整個文檔全部傳回。這時需要傳回我們所需的資料即可。用到了數組的$,$elemMatch 的操作。如下。

資料結構如下: 資料結構表示商品的價格曆史記錄,這裡有兩個時間點,我們隻希望傳回6月20号之後的價格記錄。 整個文檔資料:

{
    "_id" : NumberLong(30665),
    "priceNodes" : [ 
        {
            "priceTime" : ISODate("2016-06-17T09:21:49.000Z"),
            "priceTimeL" : NumberLong(1466155309000),
            "price" : 578.0
        }, 
        {
            "priceTime" : ISODate("2016-06-29T02:51:05.000Z"),
            "priceTimeL" : NumberLong(1467168665000),
            "price" : 578.0
        }
    ]
}
           

查詢結果要求:

{
    "_id" : NumberLong(30665),
    "priceNodes" : [ 
        {
            "priceTime" : ISODate("2016-06-29T02:51:05.000Z"),
            "priceTimeL" : NumberLong(1467168665000),
            "price" : 578.0
        }
    ]
}
           

mongodb查詢:

db.getCollection('SkuHistoryPrice')
    .find({"_id":30665, "priceNodes":{"$elemMatch":{"priceTimeL":{"$gte":1466352000000}}}}, {"priceNodes.$":1})
           

spring-data-mongodb查詢: --未完待續--

版權聲明:本文為CSDN部落客「weixin_34360651」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34360651/article/details/91887902