Mongodb C#客户端数据关联数据,使用Linq语法进行关联
在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://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语法进行关联的更多相关文章
- EF里单个实体的增查改删以及主从表关联数据的各种增删 改查
本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表 ...
- Entity Framework Code First实体关联数据加载
在项目过程中,两个实体数据之间在往往并非完全独立的,而是存在一定的关联关系,如一对一.一对多及多对多等关联.存在关联关系的实体,经常根据一个实体的实例来查询获取与之关联的另外实体的实例. Entity ...
- MongoDB + Spark: 完整的大数据解决方案
Spark介绍 按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎. 通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及 ...
- MongoDB 分片键分类与数据分发
In sharded clusters, if you do not use the _id field as the shard key, then your application must en ...
- Android客户端和服务器端数据交互
网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第四种: 一.服务器端: 代 ...
- SpringMVC客户端发送json数据时报400错误
当测试客户端发送json数据给服务器时,找不到响应路径? 原来是参数类型不符,即使是json也要考虑参数的个数和类型 解决:将age请求参数由"udf"改为"3" ...
- MagicalRecord 多表关联数据操作
最近在使用MagicalRecord做数据持久层CoreData的操作库,今天做了一个多表关联数据的操作,整理了一个demo,特此记录一下. 关于如何使用Cocopads 和 MagicalRecor ...
- MongoDB学习(三)数据导入导出及备份恢复
这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下 ...
- response小结(一)——用response向客户端输出中文数据(乱码问题分析)
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应的response对象.request和response对象既然代表请求和响应,那我们要 ...
随机推荐
- 新建 Vue项目 使用iView报错解决
错误如下: error in ./src/index.less Module build failed: // https://github.com/ant-design/ant-motion/iss ...
- 苏宁OLAP架构设计
一. 功能综述 OLAP引擎为存储和计算二合一的引擎,自身内部涵盖了对数据的管理以及提供查询能力.底层数据完全规划在引擎内部,外部系统不允许直接操作底层数据,而是需要通过暴露出来的接口来读写引擎内部数 ...
- 重新找回spyder3-editor 里的code completion
升级到spyder3之后, 突然丢失了code autocompletion在editor context里. 觉得太不爽了. 虽然在ipython窗格里TAB键的自动完成功能依然完好. 仔细观察 T ...
- 织梦dedecms 模板文件不存在,无法解析文档!
方法一:[此对应喜欢把模板文件使用".html"的格式,] /include/arc.archives.class.php 556行 if (!preg_match("# ...
- LintCode 387: Smallest Difference
LintCode 387: Smallest Difference 题目描述 给定两个整数数组(第一个是数组A,第二个是数组B),在数组A中取A[i],数组B中取B[j],A[i]和B[j]两者的差越 ...
- 20155213 2016-2017-2 《Java程序设计》第七周学习总结
20155213 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lamb ...
- Chrome截长屏
本文地址:https://www.cnblogs.com/veinyin/p/9257833.html Chrome截取长屏一直是一个痛点,之前尝试过第三方截图工具,但是不是收费就是不怎么好用,今 ...
- 【转】C# Graphics类详解
Brush 类 .NET Framework 4 定义用于填充图形形状(如矩形.椭圆.饼形.多边形和封闭路径)的内部的对象. 属于命名空间: System.Drawing 这是一个抽象基类,不能进行 ...
- 【转】Graphics.DrawImage 方法 IntPtr 结构 GDI 句柄 知识收集
Graphics.DrawImage 方法 在指定的位置使用原始物理大小绘制指定的 Image. 命名空间:System.Drawing 程序集:System.Drawing(在 system.dra ...
- Python练习-装饰器版-为什么我的用户总被锁定
参考代码如下: 1.用户登录程序流程控制代码: # 编辑者:闫龙 if __name__ == '__main__': import UserLoginFuncation LoclCount=[]; ...