У меня есть коллекция MongoDB, как указано ниже:Поиск в Монго внедренный документ с помощью PHP
var myCollection = [{
"_id" : ObjectId("559158f6473f6c540f000282"),
"code" : [
{
"score" : -100,
"rule_name" : "Account Email",
"header" : "Blacklist",
"reason" : "Blacklist Account Email"
}
]
},
{
"_id" : ObjectId("5591592c473f6c540f000284"),
"code" : [
{
"score" : -100,
"rule_name" : "Account Email",
"header" : "Blacklist",
"reason" : "Blacklist Account Email"
}
]
},{
"_id" : ObjectId("55915931473f6c540f000286"),
"code" : [
{
"score" : -100,
"rule_name" : "Account Email",
"header" : "Blacklist",
"reason" : "Blacklist Account Email"
}
]
},{
"_id" : ObjectId("55915996473f6cd40b00010e"),
"code" : [
{
"score" : 23,
"rule_name" : "Transaction Check",
"header" : "",
"reason" : " Transaction Check"
},
{
"score" : -100,
"rule_name" : "Account Email",
"header" : "Blacklist",
"reason" : "Blacklist Account Email"
}
]
},{
"_id" : ObjectId("55915a3d473f6c540f000288"),
"code" : [
{
"score" : 23,
"rule_name" : "Transaction Check",
"header" : "",
"reason" : " Transaction Check"
},
{
"score" : -100,
"rule_name" : "Account Email",
"header" : "Blacklist",
"reason" : "Blacklist Account Email"
}
]
},{
"_id" : ObjectId("55942f1f473f6c7808000037"),
"code" : [
{
"score" : 80,
"rule_name" : "Test Rule",
"header" : "",
"reason" : "Test Rule"
}
]
},{
"_id" : ObjectId("55943328473f6cfc1000002a"),
"code" : [
{
"score" : 80,
"rule_name" : "Test Rule",
"header" : "",
"reason" : "Test Rule"
}
]
},{
"_id" : ObjectId("559433f9473f6cf012000032"),
"code" : [
{
"score" : 80,
"rule_name" : "Test Rule",
"header" : "",
"reason" : "Test Rule"
}
]
}];
Я хочу искать по «причине» в поле «код» в вышеуказанном документе со следующими операторами: 1. РАВНО - возвращает весь код, в котором по крайней мере один совпадает с «почему» значение 2. не равно - возвращает весь код, в котором ни один не соответствует значению с поля «причина» Это, как я сделал это в JavaScript:
db.my_collection.find({
"code.reason" : {"$ne" : "Blacklist Account Email"}
})
Но я не удалось сделать это в PHP с помощью массива. Я также пробовал «$ elemMatch», но это не работает с «Not Equal». Я не могу использовать команду() в моем случае, и мне нужно, чтобы это было сделано с использованием массивов.
Спасибо Vishwas за ваше предложение, но первый без $ elemMatch терпит неудачу в случае соответствующего оператора, а вторые один (2) отлично работает с «$ elemMatch» для EQUAL, но он не работает с НЕ EQUAL Operator. –
т. Е. Оба подхода не работают в случае оператора «НЕ РАВНО». –
@TanujSaxena Я не понял, что вы хотите сделать? Вы хотите узнать «code.reason», которые не равны «Blacklist Account Email» или что-то еще? – Vishwas