升级流程引擎配置文件版本
This commit is contained in:
+305
@@ -0,0 +1,305 @@
|
||||
// Copyright (C) MongoDB, Inc. 2017-present.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
package mongo
|
||||
|
||||
import (
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
// WriteModel is an interface implemented by models that can be used in a BulkWrite operation. Each WriteModel
|
||||
// represents a write.
|
||||
//
|
||||
// This interface is implemented by InsertOneModel, DeleteOneModel, DeleteManyModel, ReplaceOneModel, UpdateOneModel,
|
||||
// and UpdateManyModel. Custom implementations of this interface must not be used.
|
||||
type WriteModel interface {
|
||||
writeModel()
|
||||
}
|
||||
|
||||
// InsertOneModel is used to insert a single document in a BulkWrite operation.
|
||||
type InsertOneModel struct {
|
||||
Document interface{}
|
||||
}
|
||||
|
||||
// NewInsertOneModel creates a new InsertOneModel.
|
||||
func NewInsertOneModel() *InsertOneModel {
|
||||
return &InsertOneModel{}
|
||||
}
|
||||
|
||||
// SetDocument specifies the document to be inserted. The document cannot be nil. If it does not have an _id field when
|
||||
// transformed into BSON, one will be added automatically to the marshalled document. The original document will not be
|
||||
// modified.
|
||||
func (iom *InsertOneModel) SetDocument(doc interface{}) *InsertOneModel {
|
||||
iom.Document = doc
|
||||
return iom
|
||||
}
|
||||
|
||||
func (*InsertOneModel) writeModel() {}
|
||||
|
||||
// DeleteOneModel is used to delete at most one document in a BulkWriteOperation.
|
||||
type DeleteOneModel struct {
|
||||
Filter interface{}
|
||||
Collation *options.Collation
|
||||
Hint interface{}
|
||||
}
|
||||
|
||||
// NewDeleteOneModel creates a new DeleteOneModel.
|
||||
func NewDeleteOneModel() *DeleteOneModel {
|
||||
return &DeleteOneModel{}
|
||||
}
|
||||
|
||||
// SetFilter specifies a filter to use to select the document to delete. The filter must be a document containing query
|
||||
// operators. It cannot be nil. If the filter matches multiple documents, one will be selected from the matching
|
||||
// documents.
|
||||
func (dom *DeleteOneModel) SetFilter(filter interface{}) *DeleteOneModel {
|
||||
dom.Filter = filter
|
||||
return dom
|
||||
}
|
||||
|
||||
// SetCollation specifies a collation to use for string comparisons. The default is nil, meaning no collation will be
|
||||
// used.
|
||||
func (dom *DeleteOneModel) SetCollation(collation *options.Collation) *DeleteOneModel {
|
||||
dom.Collation = collation
|
||||
return dom
|
||||
}
|
||||
|
||||
// SetHint specifies the index to use for the operation. This should either be the index name as a string or the index
|
||||
// specification as a document. This option is only valid for MongoDB versions >= 4.4. Server versions >= 3.4 will
|
||||
// return an error if this option is specified. For server versions < 3.4, the driver will return a client-side error if
|
||||
// this option is specified. The driver will return an error if this option is specified during an unacknowledged write
|
||||
// operation. The driver will return an error if the hint parameter is a multi-key map. The default value is nil, which
|
||||
// means that no hint will be sent.
|
||||
func (dom *DeleteOneModel) SetHint(hint interface{}) *DeleteOneModel {
|
||||
dom.Hint = hint
|
||||
return dom
|
||||
}
|
||||
|
||||
func (*DeleteOneModel) writeModel() {}
|
||||
|
||||
// DeleteManyModel is used to delete multiple documents in a BulkWrite operation.
|
||||
type DeleteManyModel struct {
|
||||
Filter interface{}
|
||||
Collation *options.Collation
|
||||
Hint interface{}
|
||||
}
|
||||
|
||||
// NewDeleteManyModel creates a new DeleteManyModel.
|
||||
func NewDeleteManyModel() *DeleteManyModel {
|
||||
return &DeleteManyModel{}
|
||||
}
|
||||
|
||||
// SetFilter specifies a filter to use to select documents to delete. The filter must be a document containing query
|
||||
// operators. It cannot be nil.
|
||||
func (dmm *DeleteManyModel) SetFilter(filter interface{}) *DeleteManyModel {
|
||||
dmm.Filter = filter
|
||||
return dmm
|
||||
}
|
||||
|
||||
// SetCollation specifies a collation to use for string comparisons. The default is nil, meaning no collation will be
|
||||
// used.
|
||||
func (dmm *DeleteManyModel) SetCollation(collation *options.Collation) *DeleteManyModel {
|
||||
dmm.Collation = collation
|
||||
return dmm
|
||||
}
|
||||
|
||||
// SetHint specifies the index to use for the operation. This should either be the index name as a string or the index
|
||||
// specification as a document. This option is only valid for MongoDB versions >= 4.4. Server versions >= 3.4 will
|
||||
// return an error if this option is specified. For server versions < 3.4, the driver will return a client-side error if
|
||||
// this option is specified. The driver will return an error if this option is specified during an unacknowledged write
|
||||
// operation. The driver will return an error if the hint parameter is a multi-key map. The default value is nil, which
|
||||
// means that no hint will be sent.
|
||||
func (dmm *DeleteManyModel) SetHint(hint interface{}) *DeleteManyModel {
|
||||
dmm.Hint = hint
|
||||
return dmm
|
||||
}
|
||||
|
||||
func (*DeleteManyModel) writeModel() {}
|
||||
|
||||
// ReplaceOneModel is used to replace at most one document in a BulkWrite operation.
|
||||
type ReplaceOneModel struct {
|
||||
Collation *options.Collation
|
||||
Upsert *bool
|
||||
Filter interface{}
|
||||
Replacement interface{}
|
||||
Hint interface{}
|
||||
}
|
||||
|
||||
// NewReplaceOneModel creates a new ReplaceOneModel.
|
||||
func NewReplaceOneModel() *ReplaceOneModel {
|
||||
return &ReplaceOneModel{}
|
||||
}
|
||||
|
||||
// SetHint specifies the index to use for the operation. This should either be the index name as a string or the index
|
||||
// specification as a document. This option is only valid for MongoDB versions >= 4.2. Server versions >= 3.4 will
|
||||
// return an error if this option is specified. For server versions < 3.4, the driver will return a client-side error if
|
||||
// this option is specified. The driver will return an error if this option is specified during an unacknowledged write
|
||||
// operation. The driver will return an error if the hint parameter is a multi-key map. The default value is nil, which
|
||||
// means that no hint will be sent.
|
||||
func (rom *ReplaceOneModel) SetHint(hint interface{}) *ReplaceOneModel {
|
||||
rom.Hint = hint
|
||||
return rom
|
||||
}
|
||||
|
||||
// SetFilter specifies a filter to use to select the document to replace. The filter must be a document containing query
|
||||
// operators. It cannot be nil. If the filter matches multiple documents, one will be selected from the matching
|
||||
// documents.
|
||||
func (rom *ReplaceOneModel) SetFilter(filter interface{}) *ReplaceOneModel {
|
||||
rom.Filter = filter
|
||||
return rom
|
||||
}
|
||||
|
||||
// SetReplacement specifies a document that will be used to replace the selected document. It cannot be nil and cannot
|
||||
// contain any update operators (https://www.mongodb.com/docs/manual/reference/operator/update/).
|
||||
func (rom *ReplaceOneModel) SetReplacement(rep interface{}) *ReplaceOneModel {
|
||||
rom.Replacement = rep
|
||||
return rom
|
||||
}
|
||||
|
||||
// SetCollation specifies a collation to use for string comparisons. The default is nil, meaning no collation will be
|
||||
// used.
|
||||
func (rom *ReplaceOneModel) SetCollation(collation *options.Collation) *ReplaceOneModel {
|
||||
rom.Collation = collation
|
||||
return rom
|
||||
}
|
||||
|
||||
// SetUpsert specifies whether or not the replacement document should be inserted if no document matching the filter is
|
||||
// found. If an upsert is performed, the _id of the upserted document can be retrieved from the UpsertedIDs field of the
|
||||
// BulkWriteResult.
|
||||
func (rom *ReplaceOneModel) SetUpsert(upsert bool) *ReplaceOneModel {
|
||||
rom.Upsert = &upsert
|
||||
return rom
|
||||
}
|
||||
|
||||
func (*ReplaceOneModel) writeModel() {}
|
||||
|
||||
// UpdateOneModel is used to update at most one document in a BulkWrite operation.
|
||||
type UpdateOneModel struct {
|
||||
Collation *options.Collation
|
||||
Upsert *bool
|
||||
Filter interface{}
|
||||
Update interface{}
|
||||
ArrayFilters *options.ArrayFilters
|
||||
Hint interface{}
|
||||
}
|
||||
|
||||
// NewUpdateOneModel creates a new UpdateOneModel.
|
||||
func NewUpdateOneModel() *UpdateOneModel {
|
||||
return &UpdateOneModel{}
|
||||
}
|
||||
|
||||
// SetHint specifies the index to use for the operation. This should either be the index name as a string or the index
|
||||
// specification as a document. This option is only valid for MongoDB versions >= 4.2. Server versions >= 3.4 will
|
||||
// return an error if this option is specified. For server versions < 3.4, the driver will return a client-side error if
|
||||
// this option is specified. The driver will return an error if this option is specified during an unacknowledged write
|
||||
// operation. The driver will return an error if the hint parameter is a multi-key map. The default value is nil, which
|
||||
// means that no hint will be sent.
|
||||
func (uom *UpdateOneModel) SetHint(hint interface{}) *UpdateOneModel {
|
||||
uom.Hint = hint
|
||||
return uom
|
||||
}
|
||||
|
||||
// SetFilter specifies a filter to use to select the document to update. The filter must be a document containing query
|
||||
// operators. It cannot be nil. If the filter matches multiple documents, one will be selected from the matching
|
||||
// documents.
|
||||
func (uom *UpdateOneModel) SetFilter(filter interface{}) *UpdateOneModel {
|
||||
uom.Filter = filter
|
||||
return uom
|
||||
}
|
||||
|
||||
// SetUpdate specifies the modifications to be made to the selected document. The value must be a document containing
|
||||
// update operators (https://www.mongodb.com/docs/manual/reference/operator/update/). It cannot be nil or empty.
|
||||
func (uom *UpdateOneModel) SetUpdate(update interface{}) *UpdateOneModel {
|
||||
uom.Update = update
|
||||
return uom
|
||||
}
|
||||
|
||||
// SetArrayFilters specifies a set of filters to determine which elements should be modified when updating an array
|
||||
// field.
|
||||
func (uom *UpdateOneModel) SetArrayFilters(filters options.ArrayFilters) *UpdateOneModel {
|
||||
uom.ArrayFilters = &filters
|
||||
return uom
|
||||
}
|
||||
|
||||
// SetCollation specifies a collation to use for string comparisons. The default is nil, meaning no collation will be
|
||||
// used.
|
||||
func (uom *UpdateOneModel) SetCollation(collation *options.Collation) *UpdateOneModel {
|
||||
uom.Collation = collation
|
||||
return uom
|
||||
}
|
||||
|
||||
// SetUpsert specifies whether or not a new document should be inserted if no document matching the filter is found. If
|
||||
// an upsert is performed, the _id of the upserted document can be retrieved from the UpsertedIDs field of the
|
||||
// BulkWriteResult.
|
||||
func (uom *UpdateOneModel) SetUpsert(upsert bool) *UpdateOneModel {
|
||||
uom.Upsert = &upsert
|
||||
return uom
|
||||
}
|
||||
|
||||
func (*UpdateOneModel) writeModel() {}
|
||||
|
||||
// UpdateManyModel is used to update multiple documents in a BulkWrite operation.
|
||||
type UpdateManyModel struct {
|
||||
Collation *options.Collation
|
||||
Upsert *bool
|
||||
Filter interface{}
|
||||
Update interface{}
|
||||
ArrayFilters *options.ArrayFilters
|
||||
Hint interface{}
|
||||
}
|
||||
|
||||
// NewUpdateManyModel creates a new UpdateManyModel.
|
||||
func NewUpdateManyModel() *UpdateManyModel {
|
||||
return &UpdateManyModel{}
|
||||
}
|
||||
|
||||
// SetHint specifies the index to use for the operation. This should either be the index name as a string or the index
|
||||
// specification as a document. This option is only valid for MongoDB versions >= 4.2. Server versions >= 3.4 will
|
||||
// return an error if this option is specified. For server versions < 3.4, the driver will return a client-side error if
|
||||
// this option is specified. The driver will return an error if this option is specified during an unacknowledged write
|
||||
// operation. The driver will return an error if the hint parameter is a multi-key map. The default value is nil, which
|
||||
// means that no hint will be sent.
|
||||
func (umm *UpdateManyModel) SetHint(hint interface{}) *UpdateManyModel {
|
||||
umm.Hint = hint
|
||||
return umm
|
||||
}
|
||||
|
||||
// SetFilter specifies a filter to use to select documents to update. The filter must be a document containing query
|
||||
// operators. It cannot be nil.
|
||||
func (umm *UpdateManyModel) SetFilter(filter interface{}) *UpdateManyModel {
|
||||
umm.Filter = filter
|
||||
return umm
|
||||
}
|
||||
|
||||
// SetUpdate specifies the modifications to be made to the selected documents. The value must be a document containing
|
||||
// update operators (https://www.mongodb.com/docs/manual/reference/operator/update/). It cannot be nil or empty.
|
||||
func (umm *UpdateManyModel) SetUpdate(update interface{}) *UpdateManyModel {
|
||||
umm.Update = update
|
||||
return umm
|
||||
}
|
||||
|
||||
// SetArrayFilters specifies a set of filters to determine which elements should be modified when updating an array
|
||||
// field.
|
||||
func (umm *UpdateManyModel) SetArrayFilters(filters options.ArrayFilters) *UpdateManyModel {
|
||||
umm.ArrayFilters = &filters
|
||||
return umm
|
||||
}
|
||||
|
||||
// SetCollation specifies a collation to use for string comparisons. The default is nil, meaning no collation will be
|
||||
// used.
|
||||
func (umm *UpdateManyModel) SetCollation(collation *options.Collation) *UpdateManyModel {
|
||||
umm.Collation = collation
|
||||
return umm
|
||||
}
|
||||
|
||||
// SetUpsert specifies whether or not a new document should be inserted if no document matching the filter is found. If
|
||||
// an upsert is performed, the _id of the upserted document can be retrieved from the UpsertedIDs field of the
|
||||
// BulkWriteResult.
|
||||
func (umm *UpdateManyModel) SetUpsert(upsert bool) *UpdateManyModel {
|
||||
umm.Upsert = &upsert
|
||||
return umm
|
||||
}
|
||||
|
||||
func (*UpdateManyModel) writeModel() {}
|
||||
Reference in New Issue
Block a user