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,我不想要它
这是可能在一个单一的查询?
谢谢