Database

[{"username":"JAVA","name":"Peter Parker","location":{"name":"New York"},"tags":["JS","TS","OSS"],"r":1},{"username":"Spiderman","name":"JAVA","location":{"name":"New York"},"tags":["JS","TS","OSS"],"r":2},{"username":"Spiderman","name":"Peter Parker","location":{"name":"JAVA"},"tags":["JS","TS","OSS"],"r":3},{"username":"Spiderman","name":"Peter Parker","location":{"name":"New York"},"tags":["JS","TS","OSS","JAVA"],"r":4},{"username":"JAVA","name":"Peter Parker","location":{"name":"Naw York"},"tags":["JS","TS","OSS","JAVA"],"r":5},]

Query

db.collection.find({$and:[{$or:[{username:{$in:["JS","TS","OSS","JAVA"]}},{name:{$in:["JS","TS","OSS","JAVA"]}},{"location.name":{$in:["JS","TS","OSS","JAVA"]}}]},{tags:{$all:["JS","TS","OSS","JAVA"]}}]})

Result