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

本文关键字:获取 字段 何使用 MongoDB | 更新日期: 2023-09-27 18:13:11

所以我试图使用asp.net MVC创建一个网站,它包括一个使用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());
    }

And my view:

<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,所以我很抱歉,如果我完全屠宰它!如果你需要更多的细节就告诉我。谢谢你!

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

找到问题了!行:

var messageCollection = database.GetCollection<MessageViewModel>("messages")
控制器中的

应该是:

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

只是一个想法,如果您正在使用MongoDb 2.0驱动程序(和异步),您可以使用本机Find(),它看起来像这样:

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

这将返回集合中的所有项