在Mongodb C# drivers 文档

官方地址:https://docs.mongodb.com/ecosystem/drivers/csharp/

基础的使用请参考《c# Mongodb

原本在Nodejs中是可以直接某个字段参考自另一个表的,数据类型是ObjectID,只需要加入ref:'某个实体'即可实现

'use strict';
import mongoose from './db'; let Schema = mongoose.Schema; let jobOrderSchema = new Schema({
JobOrderCode: {
type: String,
unique: true,
trim: true,
required: [true, 'Kindly enter the jobOrder code']
},
JobOrderName: {
type: String,
trim: true,
required: [true, 'Kindly enter the jobOrder name']
},
JobOrderDesc: {
type: String,
trim: true,
required: [true, 'Kindly enter the jobOrder description']
},
OrderCount: {
type: Number,
required: [true, 'Kindly enter the order count']
},
CustomerID: {
type: Schema.Types.ObjectId,
ref:
'Customer'
},
MaterialID: {
type: Schema.Types.ObjectId,
ref: 'Material'
},
MouldID: {
type: Schema.Types.ObjectId,
ref: 'Mould'
},
MachineID:{
type: Schema.Types.ObjectId,
ref: 'Machine'

},

MachineAcceptLog:[{
type: String,
trim: true
}],
Remark: {
type: String,
trim: true
},
CreateAt: {
type: Date,
default: Date.now
},
CreateBy: {
type: String
},
LastUpdateAt: {
type: Date,
default: Date.now
},
LastUpdateBy: {
type: String
},
}); jobOrderSchema.set('collection', 'JobOrder');
const jobOrderModel = mongoose.model('JobOrder', jobOrderSchema); export default jobOrderModel;

但在C#中,暂时还没有找到ref类型的处理方式,

找到部分资料,但还没有悟透方法

参考地址:https://csharp.hotexamples.com/examples/MongoDB.Driver/MongoDBRef/-/php-mongodbref-class-examples.html

参考地址:https://oz-code.com/blog/how-to-mongodb-in-c-part-1/

使用Linq语法参考https://jira.mongodb.org/browse/CSHARP-1627

在没有找到相关的方法时,先使用以下代码代替,即使用Linq的语法进行处理

        /// <summary>
/// 获取所有未开始的订单
/// </summary>
/// <returns></returns>
public static object GetJobOrderByNoStart()
{
try
{
var customerCollection = Common.MongodbHandler.GetInstance().mc_MongoDatabase.GetCollection<DataModel.Customer>(Common.ConfigFileHandler.GetAppConfig("CustomerCollectionName"));
var materialCollection = Common.MongodbHandler.GetInstance().mc_MongoDatabase.GetCollection<DataModel.Material>(Common.ConfigFileHandler.GetAppConfig("MaterialCollectionName"));
var mouldCollection = Common.MongodbHandler.GetInstance().mc_MongoDatabase.GetCollection<DataModel.Mould>(Common.ConfigFileHandler.GetAppConfig("MouldCollectionName"));
var jobOrderCollection = Common.MongodbHandler.GetInstance().mc_MongoDatabase.GetCollection<DataModel.JobOrder>(Common.ConfigFileHandler.GetAppConfig("JobOrderCollectionName")); var getdocument = (from jo in jobOrderCollection.AsQueryable()
join cu in customerCollection.AsQueryable() on jo.CustomerID equals cu._id
join ma in materialCollection.AsQueryable() on jo.MaterialID equals ma._id
join mo in mouldCollection.AsQueryable() on jo.MouldID equals mo._id
where jo.Status == null

select new
{
JobOrderCode = jo.JobOrderCode,
JobOrderName = jo.JobOrderName,
OrderCount = jo.OrderCount,
JobOrderDesc = jo.JobOrderDesc,
Status =
(
jo.Status == null ? "未开始" :
jo.Status == "Process" ? "生产中" :
jo.Status == "Stop" ? "暂停" : "未知状态"
), CustomerCode = cu.CustomerCode,
CustomerName = cu.CustomerName, MaterialCode = ma.MaterialCode,
MaterialName = ma.MaterialName,
MaterialSpecification = ma.MaterialSpecification, MouldCode = mo.MouldCode,
MouldName = mo.MouldName,
MouldSpecification = mo.MouldSpecification,
}
).ToList(); return getdocument;
}
catch (Exception ex)
{
throw ex;
} }

Mongodb C#客户端数据关联数据,使用Linq语法进行关联的更多相关文章

  1. EF里单个实体的增查改删以及主从表关联数据的各种增删 改查

    本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表 ...

  2. Entity Framework Code First实体关联数据加载

    在项目过程中,两个实体数据之间在往往并非完全独立的,而是存在一定的关联关系,如一对一.一对多及多对多等关联.存在关联关系的实体,经常根据一个实体的实例来查询获取与之关联的另外实体的实例. Entity ...

  3. MongoDB + Spark: 完整的大数据解决方案

    Spark介绍 按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎. 通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及 ...

  4. MongoDB 分片键分类与数据分发

    In sharded clusters, if you do not use the _id field as the shard key, then your application must en ...

  5. Android客户端和服务器端数据交互

    网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第四种: 一.服务器端: 代 ...

  6. SpringMVC客户端发送json数据时报400错误

    当测试客户端发送json数据给服务器时,找不到响应路径? 原来是参数类型不符,即使是json也要考虑参数的个数和类型 解决:将age请求参数由"udf"改为"3" ...

  7. MagicalRecord 多表关联数据操作

    最近在使用MagicalRecord做数据持久层CoreData的操作库,今天做了一个多表关联数据的操作,整理了一个demo,特此记录一下. 关于如何使用Cocopads 和 MagicalRecor ...

  8. MongoDB学习(三)数据导入导出及备份恢复

    这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下 ...

  9. response小结(一)——用response向客户端输出中文数据(乱码问题分析)

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应的response对象.request和response对象既然代表请求和响应,那我们要 ...

随机推荐

  1. javascript精雕细琢(四):认亲大戏——通过console.log彻底搞清this

    目录 引言 代码在前 1.function下的this 2.箭头函数下的this 结语 引言        JS中的this指向一直是个老生常谈,但是新手又容易晕的地方.我在网上浏览了很多帖子,但是发 ...

  2. CF&&CC百套计划1 Codeforces Round #449 C. Willem, Chtholly and Seniorious (Old Driver Tree)

    http://codeforces.com/problemset/problem/896/C 题意: 对于一个随机序列,执行以下操作: 区间赋值 区间加 区间求第k小 区间求k次幂的和 对于随机序列, ...

  3. HDU 5446 lucas CRT

    n中选m个模M,M为多个素数之积 $n, m, k (1 \leq m \leq n \leq 10^{18}, 1 \leq k \leq 10)$,$M = p_1 · p_2 · · · p_k ...

  4. Eltwise层解析

    Concat层虽然利用到了上下文的语义信息,但仅仅是将其拼接起来,之所以能起到效果,在于它在不增加算法复杂度的情形下增加了channel数目.那有没有直接关联上下文的语义信息呢?答案是Eltwise层 ...

  5. 《区块链100问》第82集:应用类项目Golem

    Golem是第一个基于以太坊区块链打造的计算资源交易平台.通过区块链,Golem能链接全球的算力资源,从而实现计算能力的全球共享.应用所有者和个体用户(算力“请求方”)可以点对点地从其他用户处租用算力 ...

  6. 动态SQL中变量赋值

    在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...

  7. 莫烦课程Batch Normalization 批标准化

    for i in range(N_HIDDEN): # build hidden layers and BN layers input_size = 1 if i == 0 else 10 fc = ...

  8. PE结构详解

    1 基本概念 下表描述了贯穿于本文中的一些概念: 名称 描述 地址 是“虚拟地址”而不是“物理地址”.为什么不是“物理地址”呢?因为数据在内存的位置经常在变,这样可以节省内存开支.避开错误的内存位置等 ...

  9. Sublime2编译Python程序EOFError:EOF when reading a line解决方法【转】

    在Sublime2中编译运行Python文件时,如果代码中包含用户输入的函数时(eg. raw_input()),Ctrl+b编译运行之后会提示以下错误: 解决方法:安装SublimeREPL打开Su ...

  10. 二十二、springboot之监控管理Actuator

    1.新增spring-boot-starter-actuator的依赖 gradle: compile('org.springframework.boot:spring-boot-actuator') ...