我有以下数据表:
{
"_id" : ObjectId("value"),
"owner" : "testuser",
"date" : ISODate("2017-03-16T12:45:03.386Z"),
"location" : "thuis",
"venue" : "bijna thuis",
"description" : "fghgfh",
"completed" : false,
"winnerName" : null,
"subscriptions" : [],
"interactions" : [
{
"_id" : ObjectId("objectid"),
"owner" : "testuser",
"type" : "guess",
"date" : ISODate("2017-03-06T12:13:10.049Z"),
"answer" : false,
"message" : "test 1"
},
{
"_id" : ObjectId("objectid"),
"owner" : "testuser",
"type" : "guess",
"date" : ISODate("2017-03-06T12:13:10.049Z"),
"answer" : false,
"message" : "test 2"
}
],
"__v" : 0,
"active" : true
}
以上只是一个游戏对象。这意味着我们在数据库中获得了几个这样的对象。 我试图只获得所有者==“testuser”的交互。 问题是我似乎无法找到最好的方法来做到这一点。 在我的代码中,我得到了2个对象(Game& Interaction),其中Game有一系列交互。
有没有我仍然可以使用mongocsharpdriver做到这一点。
提前感谢所有帮助。
答案 0 :(得分:1)
希望它对你有用谢谢: - )
collection.Find(x => x.owner == "testuser").ToList(); //where collection is MongoDB collection
答案 1 :(得分:1)
感谢所有建议,并对迟到的回复感到抱歉。但我找到了解决这个问题的方法:
var filter = Builders<Game>.Filter.ElemMatch("interactions",
Builders<Interaction>.Filter.Eq("owner", owner));
var interactions = await MongoCollection.Find(filter).ToListAsync();
return interactions.SelectMany(item => item.Interactions).ToList();
这将返回将某个用户作为所有者的所有互动。 希望我能用这个答案帮助别人。