- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个应用程序正在尝试从旧版驱动程序更新到新版驱动程序。当触发以下代码时,我遇到了集合被损坏的问题。我想我已经缩小了范围。
function update($collection,$criteria,$data,$insertIfNotExists = false)
{
if(!empty($collection) && !empty($criteria) && !empty($data)) {
if (!isset($this->collection[$collection])) {
$this->collection[$collection] = (new MongoDB\Client)->hebe->{$collection};
}
if ($insertIfNotExists) {
$oldData = $this->collection[$collection]->findOne($criteria);
if ($oldData == NULL) {
$data['createdDate'] = date("Y-m-d H:i:s");
$data['modifiedDate'] = (isset($data['modifiedDate'])) ? $data['modifiedDate']:date("Y-m-d H:i:s");
/*
return ($this->collection[$collection]->insertOne($data)) ? array('status'=>'ok'):array('status'=>'error','error'=>'unknown_error');
*/
} else {
$newData = $oldData;
foreach($data as $n=>$v) {
$newData[$n] = $v;
}
$newData['modifiedDate'] = (isset($newData['modifiedDate'])) ? $newData['modifiedDate']:date("Y-m-d H:i:s");
/*
return ($this->collection[$collection]->updateOne($criteria,['$set' => $newData])) ? array('status'=>'ok'):array('status'=>'error','error'=>'unknown_error');
*/
}
} else {
/*
return ($this->collection[$collection]->updateOne($criteria,['$set' => $data])) ? array('status'=>'ok'):array('status'=>'error','error'=>'unknown_error');
*/
}
}
}
示例变量是
$collection = 'customer'
$criteria = array ( 'number' => '9999',)
$data = array (
'number' => '9999',
'name' => 'Testing Account',
'reference' => 'Peter Smith',
'defaultDeliveryAddress' => 1,
'visitAddress' => '',
'address' => '',
'district' => 'Marknad',
'postAddress' => '',
'orgNumber' => '5562041771',
'phone' => '031-7802700',
'fax' => '031-193328',
'groupCode' => 'int',
'creditCustomer' => '',
'typeOfDelivery' => 'Bil',
'typeOfPayment' => '10',
'emailAddresses' =>
array (
'invoice' => 'email1@domain.com',
'order' => 'email2@domain.com',
'deliveryNote' => 'email3@domain.com',
'packingSlip' => 'email4@domain.com',
),
'orderType' => NULL,
'termsOfDelivery' => 'RC',
'creditLimit' => 100000.0,
'pricelist' => 4,
'pricelist1' => '',
'pricelist2' => '9998',
'pricelist3' => '104',
'discount' => NULL,
'countryCode' => 'SE',
'currencyCode' => 'SEK',
'blocked' => 0,
'deliveryCost' => 0,
'vatCode' => '2',
'email' => 'peremail@domain.com',
'password' => 'password',
'modifiedDate' => '2019-06-25 00:00:00',
'deliveryAddresses' =>
array (
0 =>
array (
'row' => 1,
'name' => 'Test Address',
'address' => 'Box 12345',
'postAddress' => '42246',
'default' => true,
),
1 =>
array (
'number' => '9999',
'name' => 'Testing Address',
'reference' => '13232',
'address' => 'Box 12245',
'postAddress' => '42246',
),
),
'references' =>
array (
0 =>
array (
'number' => '9999',
'name' => 'Testing',
'email' => '',
'password' => '',
),
1 =>
array (
'number' => '9999',
'name' => 'Testing2',
'email' => '',
'password' => 'password',
),
2 =>
array (
'number' => '9999',
'name' => 'Peter Smith',
'email' => '',
'password' => 'password',
),
),
)
有人可以指出我在 updateOne
和 insertOne
上做错的正确方向吗?根据我对文档的理解,它支持数组。
编辑:我将这个系统和 MongoDB 从 2.6 升级到 3.6 的一些背景知识。我还从旧版 mongo 升级了 mongodb 驱动程序。
最佳答案
问题是集合中的旧数据有引号,而 updateOne/insertOne 数据没有。更正此问题似乎可以解决问题。
关于php - mongo php 库 updateOne 和 insertOne 损坏集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57015521/
我想先说一下,我已经阅读了这里的几篇关于这个问题的帖子。 我有一个 node/express/mongo 应用,包含以下内容: 应用程序.js: var express = require('
我正在将文档插入到名为 users 的集合中。插入后,我想返回文档 ID 以便继续使用它。所以我写了这段代码: this.db.collection("users") .insertOne({ x
我正在为 Go 测试新的官方 MongoDB 驱动程序,我注意到第一次调用 collection.InsertOne 总是花费大量时间,而所有后续调用都非常快。为什么?以及如何避免这种破坏性行为? p
我需要在 MongoDb 中插入/更新的所有文档都具有自动更新 currentDate 因此,假设我有以下 Json shipment 对象(我从第 3 方 Restful API 获取): Stri
我收到错误 duplicate key error index: my.own.$_id_ dup key: { : ObjectId('57d2c4857c137b20e40c633f') 这个 O
最初的问题已经解决,谢谢! 现在,每当我插入文档时,它都会像这样出现: { _id: "5e3b64b6655fc51454548421", todos: [ ], title: "title" }
我正在尝试将我的旧版应用程序从 Java 驱动程序 2.10.1 升级到 3.0.0所以将insert方法改为insertOne。但是 DBCollection.insert() 返回了结果,我可以在
MongoDB 上的 insert()、insertOne() 和 insertMany() 方法有什么区别。我应该在什么情况下使用它们? 我阅读了文档,但不清楚何时使用每个文档。 最佳答案 What
我在 bulkWrite 中有 insertOne 和 updateOne 如下: async function bulkWrite(users) { await users.bulkWrite(
我有一个应用程序正在尝试从旧版驱动程序更新到新版驱动程序。当触发以下代码时,我遇到了集合被损坏的问题。我想我已经缩小了范围。 function update($collection,$crit
我有以下模型: Public class UserInfo{ public string Id{get;} public Dictionary Metadata{ get; } } 当我尝试向
我正在用node学习mongodb,我正在玩下面的代码 var assert = require('assert') var url = 'mongodb://localhost:27017/lear
我有以下结构 type Account struct { ID primitive.ObjectID `json:"id" bson:"_id"` Email str
我在 node express 上运行 MongoDB Atlas,当我使用 postman 进行测试时出现此错误。 const express = require('express'); const
我正在为 Ionic 前端开发 LoopBack 后端。它使用 MongoDB 作为数据库。 在 package.json 中,我尝试将依赖项 loopback-connector-mongodb 从
我正忙于创建一个项目,允许用户输入“电子邮件”和“密码”来注册网站, 当我尝试使用“电子邮件”和“密码”输入用户进入该站点时,出现以下错误: MongooseError: Operation user
在我看到的文档中,我们可以使用返回的 insertOneWriteOpResultObject.ops 来检索插入的文档。 ( Docs ),但这样做时我会回来 undefined . 复制代码: c
我目前正在使用 MongoDB 和 Express 创建一个新的 API,并且我目前遇到了这个问题“操作 disneys.insertOne() 缓冲在 10000 毫秒后超时。”我目前正在使用 ro
我以为我可以阅读这个解决方案,但我看不出我做错了什么。 这是我的模型: var mongoose = require('mongoose'); var Schema = mon
所以我正在创建一个用户对象并使用 async/await 将其插入到我的 mongo 数据库中。 像这样: await db.collection('users').insertOne({
我是一名优秀的程序员,十分优秀!