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对象既然代表请求和响应,那我们要 ...
随机推荐
- Java锁及AbstractQueuedSynchronizer源码分析
一,Lock 二,关于锁的几个概念 三,ReentrantLock类图 四,几个重要的类 五,公平锁获取 5.1 lock 5.2 acquire 5.3 tryAcquire 5.3.1 hasQu ...
- Zabbix监控PV和UV
Zabbix-server:172.21.97.153 Zabbix-agent(Nginx):172.17.27.61 # Nginx日志如下: # head -3 Syz.access.log w ...
- Bzoj4763 雪辉
Time Limit: 39 Sec Memory Limit: 666 MBSubmit: 151 Solved: 80 Description 上次立下的NOIP退役Flag没有成功 这次 ...
- BZOJ1822 Frozen Nova 冷冻波
1822: [JSOI2010]Frozen Nova 冷冻波 Time Limit: 10 Sec Memory Limit: 64 MB Description WJJ喜欢“魔兽争霸”这个游戏. ...
- 20155231 2016-2017-2 《Java程序设计》第7周学习总结
20155231 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 学习目标 了解Lambda语法 了解方法引用 了解Fucntional与Stream API ...
- Rico Board.1.环境配置
1.搭建开发环境 1.解压文件 sudo tar -jvxf gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_liunx.tar.bz2 -C ...
- JS设计模式——7.工厂模式(示例-RSS阅读器)
RSS阅读器 由于我们只想跟RSS容器对象打交道,所以用一个工厂来实例化这些内部对象并把它们组装到一个RSS阅读器中. 使用工厂方法在好处在于,我们创建的RSS阅读器类不会与那些成员对象紧密耦合在一起 ...
- CodeForces 724G: Xor-matic Number of the Graph
题目传送门:CF724G. 题意简述: 一张 \(n\) 个点的无向图,边有边权. 定义三元组 \((u,v,w)(1\le u < v\le n)\) 合法当且仅当存在从点 \(u\) 到点 ...
- 【划水闲谈】Terraria 1.3.5更新
我知道这本应是一个算法博客,但又有谁规定了不能发点其他内容呢? Terraria,一个有趣的沙盒游戏.在这里,你可以建造,挖掘,开始一次又一次新的冒险. 4月19日,Re-Logic承诺的官方中文版终 ...
- 一步一步搭建 oracle 11gR2 rac+dg之grid安装(四)【转】
一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之grid安装 (四) 转自 一步一步搭建 oracle 11gR2 rac+d ...