如何使用Ruby从mongoid查询子文档?

时间:2013-12-17 23:04:07

标签: ruby mongodb ruby-on-rails-4 mongoid

我有这个文件,我只想要它的一部分。但我不确定如何在Mongoid查询中执行此操作。

{
"_id": {
    "$oid": "5297d6773865640002000000"
},
"saved_tweets": [
    {
        "_id": {
            "$oid": "52b0856b6535380002000000"
        },
        "saved_id": "123456",
        "tweet_ids": [
            "1",
            "2"
        ]
    },
    {
        "_id": {
            "$oid": "52b0856b6535380002000001"
        },
        "saved_id": "78901",
        "tweet_ids": [
            "3",
            "4"
        ]
    }
]}

根据saved_id,我想要的是所有tweet_ids。这就是我现在正在做的事情,我认为这是非常无效的。

existing_user = User.find_by(:social_id => social_id)
existing_user.saved_tweets.each do |saved_tweet| 
        if saved_id == saved_tweet.saved_id
            @saved_tweet_ids = saved_tweet.tweet_ids
        end
    end

1 个答案:

答案 0 :(得分:1)

你试过这样的事吗?

user.saved_tweets.where(saved_id: user.saved_id).map(&:tweet_ids)