2

I have the following kind json documents in mongodb:

{
 "_id": ObjectId("56e244828581920a1d32fdd5"),
 "name": "ValentinesCampaign1457669250012",
 "owner": "Ashis",
 "lines": [
   {
  "name": "Apparels1457669250012",
  "number": 19128,
  "startDate": "4-5-2016:8",
  "endDate": "2-12-2020:14",
  "targeting": [
    {
      "brand": "PEOPLE",
      "channels": [
        "ch60",
        "ch90",
        "ch10",
        "ch30",
        "ch50"
      ],
      "keywords": [
        "dress",
        "skirts",
        "bags",
        "stilletoes",
        "perfume",
        "purse"
      ]
    }
  ],
  "exclusions": [
    {
      "channels": [
        "ch88",
        "ch22",
        "ch101"
      ],
      "keywords": [
        "gun",
        "knife",
        "pistol"
      ]
    }
  ],
  "creatives": [
    {
      "url": "http://www.people.com/people/",
      "weight": 0.44,
      "startDate": "4-10-2016:6",
      "endDate": "5-5-2019:3"
    }
  ]
}
  ]
 }

if I query to get all the lines with name I use the following query:

db.campaigns.find({ lines: { $elemMatch: {name :"Apparels1457669250012" } } }  ).pretty()

which gives me the correct answer but what should I do to get the lines in which the targeting brand is people

i.e. I want the documents whose targeting.brand is "people".

By far I have used the following queries but they dont work

db.campaigns.find({ lines: { $elemMatch: {name :"Apparels1457669250012" ,targeting :{$elemMatch:{"brand":"people"}} }} }  ).pretty()

and

db.campaigns.find({ lines.$.targeting: { $elemMatch: {brand :"people" } } }  ).pretty()

both of them dont work , can someone suggest me a proper query for this?

4
  • possible duplicate of stackoverflow.com/questions/4433401/… or stackoverflow.com/questions/11489728/… Commented Mar 16, 2016 at 9:20
  • it is not a normal embedded document, it is array of docs inside an array and i need to query the inside array. Commented Mar 16, 2016 at 9:23
  • You can try using filters Commented Mar 16, 2016 at 9:25
  • try this : db.campaigns.find({$and:[{"name":"Apparels1457669250012"}, {"targeting":[{"brand":"people"}]}]}) with some edits. Commented Mar 16, 2016 at 9:32

3 Answers 3

3

Try this.

db.campaigns.find({
          lines:{ 
              $elemMatch: {
                     targeting: {
                           $elemMatch: {
                                brand: "PEOPLE"
                                       }
                                }
                          }
            }
})

Not sure if nesting works. But worth a try!

Sign up to request clarification or add additional context in comments.

4 Comments

This will not search for the specific lines.name field required. It will return all the documents which have targeting.brand as PEOPLE.
I think the question is to find "lines in which the targeting-> brand is people". And so this should work. :)
if you want additional name field then use this one: db.campaigns.find({ lines: { $elemMatch : {name :"Apparels1457669250012" }, $elemMatch : {targeting : {$elemMatch : {brand :"PEOPLE"}}} }} ).pretty()
Ahh... the name condition in the provided query confused me.
0

Can you try this one below.

db.campaigns.find({
  lines.name: 'Apparels1457669250012',
  targeting: { $elemMatch: { brand: 'PEOPLE' } }
},'targeting')

OR

db.campaigns.find( { lines.name: "Apparels1457669250012"}, { targeting: { $elemMatch: { brand: "PEOPLE" } } })

2 Comments

gives the following error: 2016-03-16T14:59:10.182+0530 E QUERY [thread1] SyntaxError: missing : after property id @(shell):1:27
@AnkitaBhowmik: what is the error, can you try the other query... that should work..
0

try this

db.campaigns.find({ lines.name :"Apparels1457669250012",lines.targeting.brand : "PEOPLE" }).pretty()

E.g. Below is my Collection. and running sub array query will result as expected

> db.companies.find({"name" : "AdventNet","relationships.person.first_name" : "S
ridhar"}).limit(1).pretty()

> db.companies.find({"name" : "AdventNet"}).limit(1).pretty()
{
        "_id" : ObjectId("52cdef7c4bab8bd675297d8b"),
        "name" : "AdventNet",
        "permalink" : "abc3",
        "crunchbase_url" : "http://www.crunchbase.com/company/adventnet",
        "homepage_url" : "http://adventnet.com",
        "blog_url" : "",
        "blog_feed_url" : "",
        "twitter_username" : "manageengine",
        "category_code" : "enterprise",
        "number_of_employees" : 600,
        "founded_year" : 1996,
        "deadpooled_year" : 2,
        "tag_list" : "",
        "alias_list" : "Zoho ManageEngine ",
        "email_address" : "[email protected]",
        "phone_number" : "925-924-9500",
        "description" : "Server Management Software",
        "created_at" : ISODate("2007-05-25T19:24:22Z"),
        "updated_at" : "Wed Oct 31 18:26:09 UTC 2012",
        "overview" : "<p>AdventNet is now <a href=\"/company/zoho-manageengine\"
 title=\"Zoho ManageEngine\" rel=\"nofollow\">Zoho ManageEngine</a>.</p>\n\n<p>F
ounded in 1996, AdventNet has served a diverse range of enterprise IT, networkin
g and telecom customers.</p>\n\n<p>AdventNet supplies server and network managem
ent software.</p>",
        "image" : {
                "available_sizes" : [
                        [
                                [
                                        150,
                                        55
                                ],
                                "assets/images/resized/0001/9732/19732v1-max-150
x150.png"
                        ],
                        [
                                [
                                        150,
                                        55
                                ],
                                "assets/images/resized/0001/9732/19732v1-max-250
x250.png"
                        ],
                        [
                                [
                                        150,
                                        55
                                ],
                                "assets/images/resized/0001/9732/19732v1-max-450
x450.png"
                        ]
                ]
        },
        "products" : [ ],
        "relationships" : [
                {
                        "is_past" : true,
                        "title" : "CEO and Co-Founder",
                        "person" : {
                                "first_name" : "Sridhar",
                                "last_name" : "Vembu",
                                "permalink" : "sridhar-vembu"
                        }
                },
                {
                        "is_past" : true,
                        "title" : "VP of Business Dev",
                        "person" : {
                                "first_name" : "Neil",
                                "last_name" : "Butani",
                                "permalink" : "neil-butani"
                        }
                },
                {
                        "is_past" : true,
                        "title" : "Usabiliy Engineer",
                        "person" : {
                                "first_name" : "Bharath",
                                "last_name" : "Balasubramanian",
                                "permalink" : "bharath-balasibramanian"
                        }
                },
                {
                        "is_past" : true,
                        "title" : "Director of Engineering",
                        "person" : {
                                "first_name" : "Rajendran",
                                "last_name" : "Dandapani",
                                "permalink" : "rajendran-dandapani"
                        }
                },
                {
                        "is_past" : true,
                        "title" : "Market Analyst",
                        "person" : {
                                "first_name" : "Aravind",
                                "last_name" : "Natarajan",
                                "permalink" : "aravind-natarajan"
                        }
                },
                {
                        "is_past" : true,
                        "title" : "Director of Product Management",
                        "person" : {
                                "first_name" : "Hyther",
                                "last_name" : "Nizam",
                                "permalink" : "hyther-nizam"
                        }
                },
                {
                        "is_past" : true,
                        "title" : "Western Regional OEM Sales Manager",
                        "person" : {
                                "first_name" : "Ian",
                                "last_name" : "Wenig",
                                "permalink" : "ian-wenig"
                        }
                }
        ],
        "competitions" : [ ],
        "providerships" : [
                {
                        "title" : "DHFH",
                        "is_past" : true,
                        "provider" : {
                                "name" : "A Small Orange",
                                "permalink" : "a-small-orange"
                        }
                }
        ],
        "total_money_raised" : "$0",
        "funding_rounds" : [ ],
        "investments" : [ ],
        "acquisition" : null,
        "acquisitions" : [ ],
        "offices" : [
                {
                        "description" : "Headquarters",
                        "address1" : "4900 Hopyard Rd.",
                        "address2" : "Suite 310",
                        "zip_code" : "94588",
                        "city" : "Pleasanton",
                        "state_code" : "CA",
                        "country_code" : "USA",
                        "latitude" : 37.692934,
                        "longitude" : -121.904945
                }
        ],
        "milestones" : [ ],
        "video_embeds" : [ ],
        "screenshots" : [
                {
                        "available_sizes" : [
                                [
                                        [
                                                150,
                                                94
                                        ],
                                        "assets/images/resized/0004/3400/43400v1
-max-150x150.png"
                                ],
                                [
                                        [
                                                250,
                                                156
                                        ],
                                        "assets/images/resized/0004/3400/43400v1
-max-250x250.png"
                                ],
                                [
                                        [
                                                450,
                                                282
                                        ],
                                        "assets/images/resized/0004/3400/43400v1
-max-450x450.png"
                                ]
                        ],
                        "attribution" : null
                }
        ],
        "external_links" : [ ],
        "partners" : [ ]
}
>

1 Comment

doesn't work, see this isn't embedded doc inside doc, it is array of docs inside array.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.