Here's a simple example illustrating a schema and a MongoDB query similar to the example you gave. I've written this in the mongo shell for simplicity; the node.js version will be similar. Hopefully this will give you an idea how to get started.
First we add some documents to the subscriber collection:
db.subscriber.insert({
date_added: ISODate('2014-01-01'),
first_name: 'Fred',
language: 'en'
})
db.subscriber.insert({
date_added: ISODate('2014-01-10'),
first_name: 'Jorge',
language: 'es'
})
db.subscriber.insert({
date_added: ISODate('2014-01-20'),
first_name: 'Jimmy',
language: 'en'
})
db.subscriber.insert({
date_added: ISODate('2014-01-30'),
first_name: 'Frodo',
language: 'sjn'
})
Here's a query similar to the example you give, matching documents that satisfy any of a condition based on a date range, a substring match of first name, or an exact match of the language:
db.subscriber.find({
$or: [
{date_added: {$gte: ISODate('2014-01-30')}},
{first_name: /Jim/},
{language: 'es'}
]})
And here are the documents returned by that query:
{
"_id" : ObjectId("530f6edc32292f1f130aae16"),
"date_added" : ISODate("2014-01-10T00:00:00Z"),
"first_name" : "Jorge",
"language" : "es"
},
{
"_id" : ObjectId("530f6edc32292f1f130aae17"),
"date_added" : ISODate("2014-01-20T00:00:00Z"),
"first_name" : "Jimmy",
"language" : "en"
},
{
"_id" : ObjectId("530f6edc32292f1f130aae18"),
"date_added" : ISODate("2014-01-30T00:00:00Z"),
"first_name" : "Frodo",
"language" : "sjn"
}
Does that help you get started?