Как получить все значения из поля в MongoDB с помощью C #

Поэтому я пытаюсь создать веб-сайт с использованием 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());
    }

И мое мнение:

<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#,asp.net,asp.net-mvc,mongodb,mongodb-query,

0

Ответов: 2


0

Выяснил проблему! Линия:

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

в моем контроллере должно было быть:

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

0

Просто подумайте, если вы используете драйвер MongoDb 2.0 (и асинхронный), вы можете использовать родной Find (), и он будет выглядеть примерно так:

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

Это вернет все элементы коллекции

C #, asp.net, asp.net-MVC, MongoDB, MongoDB-запрос,