如何使用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,所以我很抱歉,如果我完全屠宰它!如果你需要更多的细节就告诉我。谢谢你!
找到问题了!行:
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();
这将返回集合中的所有项