国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

mongodb數(shù)組查詢 - mongodb 內(nèi)嵌數(shù)組查詢問題: 如何限定返回與條件匹配的數(shù)組
伊謝爾倫
伊謝爾倫 2017-04-27 09:02:20
0
6
831

原數(shù)據(jù)為:

{
    "_id" : NumberLong(1181675746),
    "shard_qty" : 4,
    "goods_qty" : 0,
    "shop_qty" : 0,
    "favorite_qty" : 4,
    "favorite_shards" : [ 
      {
            "sid" : NumberLong(580),
            "favorite_dt" : ISODate("2015-06-26T12:13:06.405+08:00"),
            "is_attention" : true
        }, 
      {
            "sid" : NumberLong(579),
            "favorite_dt" : ISODate("2015-06-26T12:13:06.405+08:00"),
            "is_attention" : true
        }, 
        {
            "sid" : NumberLong(578),
            "favorite_dt" : ISODate("2015-06-26T12:13:06.405+08:00"),
            "is_attention" : true
        }, 
        {
            "sid" : NumberLong(577),
            "favorite_dt" : ISODate("2015-06-26T13:20:48.449+08:00"),
            "is_attention" : true
        }
    ]
}

查詢條件為

db.getCollection('web_mem_favorites').findOne(
    {
    '_id':NumberLong(1181675746),
    'favorite_shards.sid': {
        '$in':[NumberLong(577),NumberLong(578)]
        }
    }
    ,{"favorite_shards":1}
)

想返回的數(shù)據(jù):

{
    "_id" : NumberLong(1181675746),
    "favorite_shards" : [ 
      {
            "sid" : NumberLong(578),
            "favorite_dt" : ISODate("2015-06-26T12:13:06.405+08:00"),
            "is_attention" : true
        }, 
        {
            "sid" : NumberLong(577),
            "favorite_dt" : ISODate("2015-06-26T13:20:48.449+08:00"),
            "is_attention" : true
        }
    ]
}
伊謝爾倫
伊謝爾倫

小伙看你根骨奇佳,潛力無限,來學(xué)PHP伐。

全員に返信(6)
迷茫

これは簡単で、現(xiàn)在一致する配列のみを返すには次のステートメントを使用します。 リーリー

洪濤

リーリー

favorite_shards 配列が返される場合、2 番目の配列要素のみが返されます。
ただし、これには、sid:577 がどの要素であるかを事前に知っておく必要があります。
mongodb 配列クエリのマニュアルには、カスタム條件を満たす配列ユニットを返すメソッドはありません。プログラムを使用して、返された結(jié)果セットの favourites_shards データをフィルタリングしてみることができます。

淡淡煙草味

リーリー

質(zhì)問の意味は分かりました、修正コードはこちらです

リーリー

結(jié)果:
{ "_id" : NumberLong(1181675746), "favorite_shards" : [ { "sid" : NumberLong(578), "favorite_dt" : ISODate("2015-06-26T0406.405Z"), " is_attention" : true }, { "sid" : NumberLong(577), "favorite_dt" : ISODate("2015-06-26T0548.449Z"), "is_attention" : true } ] }

阿神

射影演算子 $elemMatch を使用できます:

リーリー

$elemMatch の制限は、配列內(nèi)で最初に一致したレコードのみを返すことができることです。

Ty80

これは何のソフトウェアですか?

習(xí)慣沉默

$unwind を使用してクエリを?qū)g行すると、クエリ條件を満たす複數(shù)のサブドキュメントが返されます。

リーリー
最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート