Как запустить команду bson для доступа к структуре вложенных элементов с помощью клиента C# mongodriver? - PullRequest
1 голос
/ 19 февраля 2020

Как запустить простую команду mongodb, получив доступ к вложенной структуре mongodb, написав скрипт ansi mon go? Но это не может работать, потому что это не правильно, я ищу ответ, прибегая к помощи, но я не мог найти лучший ответ. Я знаю, что использование mongodb с C# это как пытка. Пожалуйста, дайте мне отличный совет. потому что я исчерпал себя, исследуя inte rnet. Мой код - это код посейдо. это своего рода желание. Также, пожалуйста, посмотрите на мою фотографию, чтобы понять структуру моей структуры mongodb json.

  var customerinfos = db_ScaleGrid.RunCommand<BsonDocument>(new BsonDocument("db.getCollection('customers').find({'Items.0.Source.CustomerInfo':{$exists:true}})",""));
            foreach (var customerinfo in customerinfos)
            {
                var customerid = customerinfo["customerid"];
                var customerName = customerinfo["customerName"];
            }

enter image description here

1 Ответ

1 голос
/ 19 февраля 2020

Надеюсь, я правильно понял вашу структуру и требования. если нет, дайте мне знать, и я исправлю свой ответ соответственно. Вы можете легко получить доступ к информации о клиенте с помощью интерфейса mongodb c# драйвера AsQueryable, например:

var collection = new MongoClient("mongodb://localhost")
                    .GetDatabase("test")
                    .GetCollection<Customer>("customers");

var result = collection.AsQueryable()
                .Select(c => c.Items[0].Source.CustomerInfo)
                .ToArray();

. Вот строго типизированная тестовая программа:

using MongoDB.Entities;
using MongoDB.Entities.Core;
using System;
using System.Linq;

namespace StackOverFlow
{
    public class Customer : Entity
    {
        public Item[] Items { get; set; }
    }

    public class Item
    {
        public Source Source { get; set; }
    }

    public class Source
    {
        public CustomerInfo CustomerInfo { get; set; }
    }

    public class CustomerInfo
    {
        public string CustomerID { get; set; }
        public string CustomerName { get; set; }
    }

    public static class Program
    {
        private static void Main()
        {
            new DB("test");

            var customer = new Customer
            {
                Items = new[]
                {
                    new Item
                    {
                        Source = new Source {
                            CustomerInfo = new CustomerInfo
                            {
                                CustomerID = "xxxxxxx",
                                CustomerName = "customer one"
                            }
                        }
                    }
                }
            };

            customer.Save();

            var result = DB.Queryable<Customer>()
                           .Select(c => c.Items[0].Source.CustomerInfo)
                           .ToArray();

            foreach (var info in result)
            {
                Console.WriteLine($"id: {info.CustomerName} / name: {info.CustomerName}");
            }

            Console.ReadKey();
        }
    }
}

выше тестовая программа использует мою библиотеку MongoDB.Entities для краткости. если вы поражены многословием официального водителя, вы можете проверить мою библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...