Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.8k views
in Technique[技术] by (71.8m points)

mongodb - Mongo aggregation Match multiple values

I have following documents

  {
       name: 'John',
       Address :'street 1 '
   },
   {
       name: 'Jane',
       Address :'street 2 '
   },
   {
       name: 'Smith',
       Address :'street 3 '
   }

I want to search the multiple document with different vales in mongo aggregation pipeline.

That means name =('John','Smith'). I'm expecting result is

{
   name: 'John',
   Address :'street 1 '
},
{
   name: 'Smith',
   Address :'street 3 '
}

My code is

db.articles.aggregate($match: { $or: [{ name: 'John' }, { name: 'Smith' }]);

This is giving an empty value.is it possible to get document like this way?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to use operator the $in

The $in operator selects the documents where the value of a field equals any value in the specified array.

[{
    $match: {
        name: {
            $in: ['John', 'Smith']
        }
    }
}]

Reference: MongoDB Docs: $in


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...