我有一份这样的文件。
{ "_id": { "$oid" : "517e3fccc9c02d22c85f3a6f" },
"skillData": [ { "skillID": 3001,
"level": 1 }, { "skillID": 3002,
"level": 1 }, { "skillID": 1,
"level": 1 }, { "skillID": 2,
"level": 1 }, { "skillID": 3,
"level": 1 } ],
"username": "myID"}
我想要做的是获取技能ID并将其存储在变量上,以便与我自己的数组进行比较 我的代码是这样的
foreach (var item in rows)
{
var skillData = (BsonArray)item["skillData"];//this is the array of the document
Console.WriteLine(skillData);
int i=0;
while(i < 5)
{
for (int j = 0; j < skillData.Count; j++)
{
if (skillData[j] == equipTileArray[i])//this is where i want to compare
{
isSkillIDFound = true;
break;
}
}
i++;
}
}
但是skillData[j]
会将整个文档返回给我,而我只需要文档中的skillID
。我现在该怎么办?
答案 0 :(得分:1)
从外观上看,您的文档项skillData
是一个子文档数组,每个子文档都包含skillID
和level
的值。所以你需要进一步解析那些。我对mongodb并不过分熟悉,但我猜你需要尝试引用skillData[j]["skillID"]
而不是skillData[j]
,或者将skillData
的每个元素解释为新的{{} 3}}
答案 1 :(得分:0)
似乎通过使用像这样的代码来解决我的问题
var skillIDs = skillData[j].AsBsonDocument.GetValue("skillID").ToString();
这里有一些使用我在这里发布的代码的例子:
foreach (var item in rows)
{
var skillData = (BsonArray)item["skillData"];//this is the array of the document
Console.WriteLine(skillData);
int i=0;
while(i < 5)
{
for (int j = 0; j < skillData.Count; j++)
{
var skillIDs = skillData[j].AsBsonDocument.GetValue("skillID").ToString();
if (skillIDs == equipTileArray[i])
{
isSkillIDFound = true;
break;
}
}
i++;
}
}
多数人。