0
在MongoDB中,考慮結構如下個人文檔的各種實例:MongoDB的嵌套搜索多包容Criteras
JSON:
{
"PersonId": 100,
"FirstName": "Joe Louis",
"LastName": "Jordan",
"Roles": [
{
"Id": 93031,
"RoleType": 1,
"Organization": {
"Id": 2,
"NameEn": "X",
"NameFr": "X"
}
}
{
"Id": 93031,
"RoleType": 2,
"Organization": {
"Id": 3,
"NameEn": "Y",
"NameFr": "Y"
}
}
{
"Id": 93031,
"RoleType": 3,
"Organization": {
"Id": 2,
"NameEn": "X",
"NameFr": "X"
}
}
{
"Id": 93031,
"RoleType": 4,
"Organization": {
"Id": 3,
"NameEn": "Y",
"NameFr": "Y"
}
}
{
"Id": 93031,
"RoleType": 5,
"Organization": {
"Id": 2,
"NameEn": "X",
"NameFr": "X"
}
}
]}
我想檢索具有1型的角色所有的人AND 3爲嵌套組織是X(ID:2)
我想下面,但它不是很工作。我需要能夠過濾在具有所需的全部角色的人,然後檢查組織是匹配的角色文件中2
VB.NET:
Dim f As FilterDefinition(Of BsonDocument) = Builders(Of BsonDocument).Filter.All(Of Integer)("Roles.RoleId", {1, 3}) And Builders(Of BsonDocument).Filter.Eq(Of Integer)("Roles.$.Organization.Id", 2)
MongoShell:
db.test.find({$and: [{'Roles.RoleId': {$all: [1, 3]}}, {'Roles.Organization.Id': 2}]})
這是一個包容性查詢。所有的criteras必須是真實的。我一個人有角色3,但不是組織2,我不想要它
這是可能在一個單一的查詢?
謝謝