C# 如何使用C从MongoDB中的字段中获取所有值

C# 如何使用C从MongoDB中的字段中获取所有值,c#,asp.net,asp.net-mvc,mongodb,mongodb-query,C#,Asp.net,Asp.net Mvc,Mongodb,Mongodb Query,因此,我尝试使用asp.NETMVC创建一个网站,其中包括一个聊天应用程序,该应用程序使用MongoDb存储消息。我遇到的问题是,我不知道如何从集合中检索所有消息并在视图中显示它们 这是我的模型: public class MessageViewModel { public ObjectId _id { get; set; } public string FirstName { get; set; } public string UserName { ge

因此,我尝试使用asp.NETMVC创建一个网站,其中包括一个聊天应用程序,该应用程序使用MongoDb存储消息。我遇到的问题是,我不知道如何从集合中检索所有消息并在视图中显示它们

这是我的模型:

public class MessageViewModel
{
    public ObjectId _id { get; set; }        
    public string FirstName { get; set; }
    public string UserName { get; set; }
    public string Text { get; set; }
}
我的控制器:

MongoClient client;
IMongoDatabase database;

    public UserController()
    {
        client = new MongoClient("mongodb://localhost:27017");
        database = client.GetDatabase("UserMessaging");
    }

public ActionResult Messages()
    {
        var username = User.Identity.Name;
        MessageViewModel model = new MessageViewModel();

        var messageCollection = database.GetCollection<MessageViewModel>("messages");
        var messages = from m in messageCollection.AsQueryable()
                       where m.UserName == User.Identity.GetUserName()
                       select m;
        return View(messages.ToList());
    }
我的看法是:

<h2>Messages</h2>

<form class="navbar-form">
 <input type="text" class="form-control" id="SearchUser" placeholder="Type a      user" />
 <input type="hidden" id="project-id" />
</form>

<div class="container">
 <ul id="discussion">
    @if (Model != null)
    {
        { int i = 0; }
        foreach (var item in Model)
        {
            <li><p>@item.Text</p></li>
        }
    }

 </ul>
</div>
我是MongoDb的新手,所以如果我完全毁了它,我很抱歉!如果你需要更多的细节,请告诉我。
谢谢大家!

解决了这个问题!该行:

var messageCollection = database.GetCollection<MessageViewModel>("messages")
在我的控制器中,应该是:

var messageCollection = database.GetCollection<MessageViewModel>("message")

解决了问题!该行:

var messageCollection = database.GetCollection<MessageViewModel>("messages")
在我的控制器中,应该是:

var messageCollection = database.GetCollection<MessageViewModel>("message")

只是想一想,如果您使用的是MongoDb 2.0驱动程序和async,那么您可以使用本机Find,它的外观如下所示:

var messageCollection = database.GetCollection<MessageViewModel>("message")
var results = messageCollection.Find(x => true).ToListAsync();

这将返回集合中的所有项目。不过,如果您使用的是MongoDb 2.0驱动程序和异步,那么您可以使用本机查找,它的外观如下所示:

var messageCollection = database.GetCollection<MessageViewModel>("message")
var results = messageCollection.Find(x => true).ToListAsync();

这将返回集合中的所有项目

您能解释一下发生了什么吗?你什么也没得到吗?一些你在shell/你最喜欢的编辑器中找到工作了吗?它在你的控制器中,但不在前端谢谢你的快速回复!我的视图加载得很好,并且与数据库建立了连接。我不知道我是否能得到任何回报。是的,我的发现在贝壳里起作用。我不知道你最后一个问题是什么意思,对不起。希望这有帮助@Hoefmeister我的意思是,你的代码在你的控制器中,消息var包含了什么,还是它empty@HoefMeistert里面有东西。它成功地从数据库中获取了值,但不会在视图中显示结果。解决了问题!我的控制器中的行var messageCollection=database.GetCollectionmessages应该是var messageCollection=database.GetCollectionmessage!那只是个打字错误!谢谢@hoefmeister的帮助!你能解释一下发生了什么吗?你什么也没得到吗?一些你在shell/你最喜欢的编辑器中找到工作了吗?它在你的控制器中,但不在前端谢谢你的快速回复!我的视图加载得很好,并且与数据库建立了连接。我不知道我是否能得到任何回报。是的,我的发现在贝壳里起作用。我不知道你最后一个问题是什么意思,对不起。希望这有帮助@Hoefmeister我的意思是,你的代码在你的控制器中,消息var包含了什么,还是它empty@HoefMeistert里面有东西。它成功地从数据库中获取了值,但不会在视图中显示结果。解决了问题!我的控制器中的行var messageCollection=database.GetCollectionmessages应该是var messageCollection=database.GetCollectionmessage!那只是个打字错误!谢谢@hoefmeister的帮助!