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对象既然代表请求和响应,那我们要 ...
随机推荐
- C++的一些不错开源框架,可以学习和借鉴
from https://www.cnblogs.com/charlesblc/p/5703557.html [本文系外部转贴,原文地址:http://coolshell.info/c/c++/201 ...
- nginx.conf 基础配置
### 全局块开始### #配置允许运行nginx服务器的用户和用户组 user nobody; #配置允许nginx进程生成的worker process 数 worker_processes 1; ...
- AngularJS 、Backbone.js 和 Ember.js 的比较
1 介绍 我们准备在这篇文章中比较三款流行于Web的“模型-视图-*”框架:AngularJS.Backbone和Ember.为你的项目选择正确的框架能够对你及时交付项目的能力和在以后维护你自己代码的 ...
- 【清华集训 2017】小Y的地铁 [模拟退火]
小Y的地铁 Time Limit: 50 Sec Memory Limit: 256 MB Description Input Output 对于每组输入数据,输出一行一个整数,表示除掉这 n 个换 ...
- 解决windows文件夹不能自动刷新的问题
我用的是win7系统,最近忽然发现我的文档文件夹里的文件不能自动刷新了,就是当剪切或删除某个文件后,文件夹里的文件没有变化,看起来文件还在原文件夹中,只有通过手动刷新后才能看到效果,该如何解决? 网上 ...
- [转]ubuntu16.04~qt 5.8无法输入中文
编译fcitx-qt需要cmake,安装cmake命令,如果已经安装,请略过. sudo apt-get install cmake 安装 fcitx-libs-dev sudo apt-get in ...
- 跨站请求伪造(CSRF)攻击原理解析:比你所想的更危险
跨站请求伪造(CSRF)攻击原理解析:比你所想的更危险 跨站请求伪造(Cross-Site Request Forgery)或许是最令人难以理解的一种攻击方式了,但也正因如此,它的危险性也被人们所低估 ...
- 数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)
数据库名(DB_NAME).实例名(Instance_name).以及操作系统环境变量(ORACLE_SID) 在ORACLE7.8数据库中只有数据库名(db_name)和数据库实例名(instanc ...
- mysql 增加字段脚本,以及删除主键约束的脚本,存储过程
//增加一个库下面所有表的row_id和其他9个字段的存过 DELIMITER $$ USE `erptest`$$ DROP PROCEDURE IF EXISTS `UPTABLE`$$ CREA ...
- Tslib移植与分析【转】
转自:http://blog.csdn.net/water_cow/article/details/7215308 目标平台:LOONGSON-1B开发板(mips32指令集)编译平台:x86PC-- ...