簡體   English   中英

MongoDB在對象數組中查找

[英]MongoDB find in array of objects

我想查詢Mongodb:查找所有在對象的任何數組項中均具有'artist'= Iowa的用戶。 這是我收藏的Robomongo: mongo_find_music 在Python中,我正在做:

Vkuser._get_collection().find({
  'member_of_group': 20548570,
  'my_music': {
    'items': {
      '$elemMatch': {
        'artist': 'Iowa'
      }
    }
  }
}) 

但這什么也不會返回。 還嘗試了以下方法: {'member_of_group': 20548570, 'my_music': {'$elemMatch': {'$.artist': 'Iowa'}}} ,但是沒有用。

這是帶有數組的文檔的一部分:

    "can_see_audio" : 1,
"my_music" : {
    "items" : [ 
        {
            "name" : "Anastasia Plotnikova",
            "photo" : "http://cs620227.vk.me/v620227451/9c47/w_okXehPbYc.jpg",
            "id" : "864451",
            "name_gen" : "Anastasia"
        }, 
        {
            "title" : "Ain't Talkin' 'Bout Dub",
            "url" : "http://cs4964.vk.me/u14671028/audios/c5b8a0735224.mp3?extra=jgV4ZQrFrsfxZCJf4gsRgnKWvdAfIqjE0M6eMtxGFpj2yp4vjs5DYgAGImPMp4mCUSUGJzoyGeh2Es6L-H51TPa3Q_Q",
            "lyrics_id" : 24313846,
            "artist" : "Apollo 440",
            "genre_id" : 18,
            "id" : 344280392,
            "owner_id" : 864451,
            "duration" : 279
        }, 
        {
            "title" : "Animals",
            "url" : "http://cs1316.vk.me/u4198685/audios/4b9e4536e1be.mp3?extra=TScqXzQ_qaEFKHG8trrwbFyNvjvJKEOLnwOWHJZl_cW5EA6K3a9vimaMpx-Yk5_k41vRPywzuThN_IHT8mbKlPcSigw",
            "lyrics_id" : 166037,
            "artist" : "Nickelback",
            "id" : 344280351,
            "owner_id" : 864451,
            "duration" : 186
        }, 

以下查詢應該工作。 您可以使用點表示法查詢子文檔和數組。

Vkuser._get_collection().find({
  'member_of_group': 20548570,
  'my_music.items.artist':'Iowa'
})

以下查詢在mongo shell中為我工作

db.collection1.find({ "my_music.items.artist" : "Iowa" })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM