#mongodb
#mongodb
Вопрос:
У меня есть этот запрос
db.invites.find({$and: [{primaryowner: mynumber}, {invited: mynumber}]})
который я использую для извлечения записей, если они удовлетворяют приведенным выше условиям.Тем не менее, я хотел бы извлекать записи, где {eventtype:4}
и поле primaryowner:$exists: true
Это то, что у меня есть
{ eventtype: 4 },{ primaryowner: { $exists: true }}
но я знаю, что это не так, потому что мне нужно извлекать записи, где eventtype = 4
и поле primaryowner
существует.
Как я могу представить запрос ?.
Комментарии:
1. Вы спрашиваете
db.invites.find({$and: [{eventtype: 4}, { primaryowner: { $exists: true }}]})
? Ваш вопрос действительно не ясен…2. Опубликуйте свой образец документа и ожидаемый результат здесь
3. @ClementAmarnath Это мое утверждение
db.invites.find({invited:"0800123456",{$and: [{eventtype: "4"},{primaryowner: { $exists: true }}]}.pretty()
, я ожидаю получить записи, в которых приглашено 0800123456 и eventtype = 4, где в этой строке есть поле primaryowner4. получаете ли вы ожидаемый ответ? также опубликуйте образец документа из вашей коллекции
5. @ClementAmarnath Хорошо, я публикую некоторые данные.
Ответ №1:
Из вашего вопроса я не смог четко понять, что такое требуемый бизнес-сценарий, но с предоставленными примерами данных я дал псевдокод и соответствующую реализацию mongodb этого псевдокода.
if invited field is "0800123456"
if event type is 3 and event status is 11
select matching documents
or if event type is 4 and event status is 11 and primary owner exists
select matching documents
Запрос Mongo DB
db.collection.find({
$or: [
{
$and: [
{
"invited": "0800123456"
},
{
"eventtype": {
$eq: "3"
}
},
{
"eventstatus": {
$eq: 11
}
}
]
},
{
$and: [
{
"eventtype": {
$eq: "4"
}
},
{
"eventstatus": {
$eq: 11
}
},
{
primaryowner: {
$exists: true
}
}
]
}
]
})
Если это не соответствует вашему сценарию, напишите свой собственный запрос с помощью этого примера кода.
Надеюсь, это поможет!