Hướng dẫn how do i delete a key in mongodb? - Làm cách nào để xóa khóa trong mongodb?

Tôi cần xóa một khóa và giá trị nhất định khỏi mọi mục trong một bộ sưu tập cụ thể. Tôi đã xem xét loại bỏ và điều đó dường như chỉ dành cho toàn bộ các mục. Nhìn vào cập nhật, tôi không tin rằng việc cập nhật một khóa cụ thể với NULL hoặc một chuỗi trống sẽ đạt được những gì tôi đang cố gắng làm. Tôi rất là người mới bắt đầu với MongoDB, vì vậy xin vui lòng xin lỗi sự thiếu hiểu biết của tôi.

Câu chuyện dài, làm thế nào tôi có thể biến

{
  "_id" : 1234,
  "name" : "Chris",
  "description" : "Awesome"
}

vào trong

{
  "_id" : 1234,
  "name" : "Chris"
}

mà không xóa mục nhập và tạo một mục nhập mới, hoặc sử dụng bất kỳ lệnh phi MongoDB nào? Cảm ơn!

Hướng dẫn how do i delete a key in mongodb? - Làm cách nào để xóa khóa trong mongodb?

Hỏi ngày 13 tháng 4 năm 2012 lúc 18:58Apr 13, 2012 at 18:58

1

Hãy thử

{
  "_id" : 1234,
  "name" : "Chris"
}
9 trong cuộc gọi đến
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
0.

Như thế này:

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })

Và, như Vikneshwar đã nhận xét, nếu bạn muốn xóa một trường khỏi tất cả (hoặc nhiều) tài liệu, bạn có thể sử dụng

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
1 như thế này:

db.collection_name.updateMany({}, { $unset : { description : 1} })

Hướng dẫn how do i delete a key in mongodb? - Làm cách nào để xóa khóa trong mongodb?

Đã trả lời ngày 13 tháng 4 năm 2012 lúc 19:04Apr 13, 2012 at 19:04

Bee Sanbee SanBee San

2.4852 Huy hiệu vàng18 Huy hiệu bạc19 Huy hiệu đồng2 gold badges18 silver badges19 bronze badges

7

Để tham khảo một gói và xóa các "khóa" khác nhau, hãy thử cái này

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]

Hướng dẫn how do i delete a key in mongodb? - Làm cách nào để xóa khóa trong mongodb?

Taskinoor

45K12 Huy hiệu vàng116 Huy hiệu bạc140 Huy hiệu đồng12 gold badges116 silver badges140 bronze badges

Đã trả lời ngày 24 tháng 4 năm 2015 lúc 16:48Apr 24, 2015 at 16:48

Hướng dẫn how do i delete a key in mongodb? - Làm cách nào để xóa khóa trong mongodb?

Aspadacioaspadacioaspadacio

3132 huy hiệu bạc11 huy hiệu đồng2 silver badges11 bronze badges

Cũng nghĩ về

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
2 sẽ chèn hàng của bạn dưới dạng tài liệu mới nếu
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
3 không tồn tại hoặc cập nhật tài liệu hiện có nếu có.

Đã trả lời ngày 14 tháng 4 năm 2012 lúc 9:12Apr 14, 2012 at 9:12

Adrien M.Adrien M.Adrien M.

Huy hiệu vàng 3131 Huy hiệu bạc9 Huy hiệu đồng1 gold badge3 silver badges9 bronze badges

Có chìa khóa trong MongoDB không?MongoDB Manual

Tất cả các tài liệu trong bộ sưu tập MongoDB đều có khóa chính được đặt tên là _ID. Trường này được tự động gán cho một tài liệu khi chèn, do đó, hiếm khi cần cung cấp nó.

Tài liệu về nhà → Hướng dẫn sử dụng MongoDB

Quan trọng

Removes documents from a collection.

Phương pháp Dành cho Mongosh

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
4 method can have one of two syntaxes. The
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method can take a query document and an optional
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7 boolean:

db.collection.remove(
,
)

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
4Remove tài liệu từ một bộ sưu tập.

Phương pháp

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
4 có thể có một trong hai cú pháp. Phương thức
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 có thể lấy tài liệu truy vấn và
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7 Boolean tùy chọn:

db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)

Hoặc phương thức có thể lấy tài liệu truy vấn và tài liệu tùy chọn xóa tùy chọn:

Đã thay đổi trong phiên bản 5.0.

Tham số

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
8

Loại hình

Sự mô tả

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7

boolean

tài liệu

db.collection_name.updateMany({}, { $unset : { description : 1} })
3

Loại hình

Sự mô tảWrite Concern.

tài liệu

db.collection_name.updateMany({}, { $unset : { description : 1} })
4

Loại hình

Optional.

Sự mô tả

Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.

tài liệu

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}

Chỉ định tiêu chí xóa bằng cách sử dụng các toán tử truy vấn. Để xóa tất cả các tài liệu trong một bộ sưu tập, hãy truyền một tài liệu trống (

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
9).

Không bắt buộc. Để giới hạn việc xóa chỉ một tài liệu, được đặt thành

db.collection_name.updateMany({}, { $unset : { description : 1} })
1. Bỏ qua để sử dụng giá trị mặc định của
db.collection_name.updateMany({}, { $unset : { description : 1} })
2 và xóa tất cả các tài liệu phù hợp với tiêu chí xóa.

Không bắt buộc. Một tài liệu thể hiện mối quan tâm viết. Bỏ qua để sử dụng mối quan tâm ghi mặc định. Xem Viết mối quan tâm.

Bạn không thể chỉ định nhiều đối chiếu cho một hoạt động. Ví dụ: bạn không thể chỉ định các đối chiếu khác nhau trên mỗi trường hoặc nếu thực hiện tìm thấy với một loại, bạn không thể sử dụng một đối chiếu cho tìm và một đối với loại khác.

let

tài liệu

Optional.

Chỉ định một tài liệu với một danh sách các biến. Điều này cho phép bạn cải thiện khả năng đọc lệnh bằng cách tách các biến khỏi văn bản truy vấn.

Cú pháp tài liệu là:

{ : ,
...,
: }

Biến được đặt thành giá trị được trả về bởi biểu thức và không thể thay đổi sau đó.

Để truy cập giá trị của một biến trong lệnh, hãy sử dụng tiền tố dấu hiệu đô la kép (

db.collection_name.updateMany({}, { $unset : { description : 1} })
7) cùng với tên biến của bạn trong mẫu
db.collection_name.updateMany({}, { $unset : { description : 1} })
8. Ví dụ:
db.collection_name.updateMany({}, { $unset : { description : 1} })
9.

Ghi chú

Để sử dụng một biến để lọc kết quả, bạn phải truy cập biến trong toán tử

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
0.

Để biết ví dụ hoàn chỉnh bằng cách sử dụng

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
1 và các biến, hãy xem các biến sử dụng trong
db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
1Use Variables in
db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
1

Mới trong phiên bản 5.0.

Có chìa khóa trong MongoDB không?

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 returns an object that contains the status of the operation.

Returns:Có chìa khóa trong MongoDB không?WriteResult object that contains the status of the operation.

Phương thức

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 sử dụng lệnh
db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
5, sử dụng mối quan tâm ghi mặc định. Để chỉ định một mối quan tâm ghi khác nhau, bao gồm mối quan tâm ghi trong tham số tùy chọn.
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method uses the
db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
5 command, which uses the default write concern. To specify a different write concern, include the write concern in the options parameter.

Theo mặc định,

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 xóa tất cả các tài liệu phù hợp với biểu thức
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
8. Chỉ định tùy chọn
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7 để giới hạn hoạt động để xóa một tài liệu. Để xóa một tài liệu duy nhất được sắp xếp theo thứ tự được chỉ định, hãy sử dụng phương thức FindAndModify ().
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
removes all documents that match the
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
8 expression. Specify the
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7 option to limit the operation to removing a single document. To delete a single document sorted by a specified order, use the findAndModify() method.

Khi xóa nhiều tài liệu, thao tác xóa có thể xen kẽ với các hoạt động đọc và/hoặc ghi khác vào bộ sưu tập.

Bạn không thể sử dụng phương pháp

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 với bộ sưu tập giới hạn.
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method with a capped collection.

Bạn không thể sử dụng phương thức

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 trên bộ sưu tập chuỗi thời gian.
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method on a time series collection.

Tất cả các hoạt động

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 cho bộ sưu tập Sharded chỉ định tùy chọn
db.collection.remove(
,
)
2 phải bao gồm khóa Shard hoặc trường
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
3 trong đặc tả truy vấn.
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
operations for a sharded collection that specify the
db.collection.remove(
,
)
2 option must include the shard key or the
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
3 field in the query specification.

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 Các hoạt động Chỉ định
db.collection.remove(
,
)
2 trong bộ sưu tập Sharded không chứa khóa Shard hoặc trường
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
3 trả về lỗi. operations specifying
db.collection.remove(
,
)
2 in a sharded collection which do not contain either the shard key or the
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
3 field return an error.

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
4 có thể được sử dụng bên trong các giao dịch đa tài liệu. can be used inside multi-document transactions.

Không đặt rõ ràng mối quan tâm ghi cho hoạt động nếu chạy trong một giao dịch. Để sử dụng viết mối quan tâm với các giao dịch, xem giao dịch và viết mối quan tâm.

Quan trọng

Trong hầu hết các trường hợp, giao dịch đa tài liệu phát sinh chi phí hiệu suất lớn hơn so với ghi tài liệu đơn lẻ và sự sẵn có của các giao dịch đa tài liệu không nên là một sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều kịch bản, mô hình dữ liệu được chuẩn hóa (tài liệu và mảng nhúng) sẽ tiếp tục tối ưu cho các trường hợp dữ liệu và sử dụng của bạn. Đó là, đối với nhiều kịch bản, mô hình hóa dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu cho các giao dịch đa tài liệu.

Để biết các cân nhắc sử dụng giao dịch bổ sung (như giới hạn thời gian chạy và giới hạn kích thước oplog), xem thêm các cân nhắc sản xuất.

Sau đây là các ví dụ về phương pháp

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6.
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method.

Để xóa tất cả các tài liệu trong một bộ sưu tập, hãy gọi phương thức

db.collection.remove(
,
)
9 bằng tài liệu truy vấn trống
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
9. Hoạt động sau đây xóa tất cả các tài liệu khỏi bộ sưu tập BIOS:
db.collection.remove(
,
)
9
method with an empty query document
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
9. The following operation deletes all documents from the bios collection:

Hoạt động này không tương đương với phương pháp

db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
1.

Để loại bỏ tất cả các tài liệu khỏi bộ sưu tập, có thể sử dụng phương thức

db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
1 hiệu quả hơn để bỏ toàn bộ bộ sưu tập, bao gồm các chỉ mục, sau đó tạo lại bộ sưu tập và xây dựng lại các chỉ mục.

Để xóa các tài liệu phù hợp với tiêu chí xóa, hãy gọi phương thức

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 với tham số
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
4:
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method with the
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
4 parameter:

Hoạt động sau đây sẽ loại bỏ tất cả các tài liệu khỏi bộ sưu tập

db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
5 trong đó
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
6 lớn hơn
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
7:

db.products.remove( { qty: { $gt: 20 } } )

Hoạt động sau đây cho một bộ bản sao sẽ loại bỏ tất cả các tài liệu khỏi bộ sưu tập

db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
5 trong đó
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
6 lớn hơn
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
7 và chỉ định mối quan tâm ghi của
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1 với
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
2 của 5000 mili giây. Hoạt động này hoặc trở lại sau khi viết tuyên truyền cho cả chính và một phụ, hoặc hết lần sau 5 giây.

{
  "_id" : 1234,
  "name" : "Chris"
}
0

Để xóa tài liệu đầu tiên phù hợp với tiêu chí xóa, hãy gọi phương thức

db.collection.remove(
,
)
9 với tiêu chí
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
8 và tham số
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7 được đặt thành
db.collection_name.updateMany({}, { $unset : { description : 1} })
1 hoặc
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
7.
db.collection.remove(
,
)
9
method with the
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
8 criteria and the
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
7 parameter set to
db.collection_name.updateMany({}, { $unset : { description : 1} })
1 or
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
7.

Hoạt động sau đây sẽ loại bỏ tài liệu đầu tiên khỏi bộ sưu tập

db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
5 trong đó
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
6 lớn hơn
db.collection.remove(
,
{
justOne: ,
writeConcern: <document>,
collation: <document>,
let: <document> // Added in MongoDB 5.0
}
)
7:

{
  "_id" : 1234,
  "name" : "Chris"
}
1

Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.

Bộ sưu tập

{ : ,
...,
: }
1 có các tài liệu sau:

{
  "_id" : 1234,
  "name" : "Chris"
}
2

Hoạt động sau bao gồm tùy chọn đối chiếu:

{
  "_id" : 1234,
  "name" : "Chris"
}
3

Mới trong phiên bản 5.0.

Để xác định các biến mà bạn có thể truy cập ở nơi khác trong lệnh, hãy sử dụng tùy chọn LET.let option.

Ghi chú

Để lọc kết quả bằng cách sử dụng một biến, bạn phải truy cập biến trong toán tử

db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
0.

Tạo bộ sưu tập

{ : ,
...,
: }
3:

{
  "_id" : 1234,
  "name" : "Chris"
}
4

Ví dụ sau đây xác định biến

{ : ,
...,
: }
4 trong
db['name1.name2.name3.Properties'].remove([ { "key" : "name_key1" }, { "key" : "name_key2" }, { "key" : "name_key3" } )]
1 và sử dụng biến để xóa hương vị bánh dâu tây:

{
  "_id" : 1234,
  "name" : "Chris"
}
5

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 trả về một đối tượng
{ : ,
...,
: }
7 chứa trạng thái của hoạt động. Khi thành công, đối tượng
{ : ,
...,
: }
7 chứa thông tin về số lượng tài liệu bị xóa:
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
returns a
{ : ,
...,
: }
7 object that contains the status of the operation. Upon success, the
{ : ,
...,
: }
7 object contains information on the number of documents removed:

{
  "_id" : 1234,
  "name" : "Chris"
}
6

Mẹo

Xem thêm:

Nếu phương thức

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 gặp phải viết lỗi liên quan, kết quả bao gồm trường

db.products.remove( { qty: { $gt: 20 } } )

0:
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method encounters write concern errors, the results include the

db.products.remove( { qty: { $gt: 20 } } )

0 field:

{
  "_id" : 1234,
  "name" : "Chris"
}
7

Mẹo

Nếu phương thức

db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6 gặp phải lỗi không liên quan, kết quả bao gồm trường

db.products.remove( { qty: { $gt: 20 } } )

2:
db.collection_name.update({ _id: 1234 }, { $unset : { description : 1} })
6
method encounters a non-write concern error, the results include

db.products.remove( { qty: { $gt: 20 } } )

2 field:

{
  "_id" : 1234,
  "name" : "Chris"
}
8

Mẹo

Xem thêm:

Lệnh nào được sử dụng để xóa dữ liệu khỏi MongoDB?

DropDatabase () Lệnh được sử dụng để bỏ cơ sở dữ liệu hiện có. Lệnh này sẽ xóa cơ sở dữ liệu hiện được chọn. Nếu bạn chưa chọn bất kỳ cơ sở dữ liệu nào, thì nó sẽ xóa cơ sở dữ liệu 'kiểm tra' mặc định. the command is used to drop an existing database. This command will delete the currently selected database. If you have not selected any database, then it will delete the default 'test' database.

Chúng ta có thể xóa _id trong MongoDB không?

MongoDB tạo ra một chỉ mục duy nhất trên trường _ID trong quá trình tạo ra một bộ sưu tập.Chỉ số _ID ngăn khách hàng chèn hai tài liệu có cùng giá trị cho trường _ID.Bạn không thể bỏ chỉ mục này trên trường _id.You cannot drop this index on the _id field.

Khóa MongoDB của tôi ở đâu?

Chúng tôi sẽ khám phá các phương pháp khác nhau của MongoDB, để tìm nạp tên trường chính của các tài liệu dựa trên các bộ lọc được áp dụng.Trước tiên, chúng tôi sẽ sử dụng phương thức Find hoặc FindOne để tìm nạp dữ liệu cần thiết và sau đó sử dụng phương thức tổng hợp.Tại đây, chúng tôi sẽ viết các truy vấn cả trong truy vấn Shell MongoDB và mã trình điều khiển Java.use the find or findone method to fetch the required data and later use the aggregation method. Here, we'll write queries both in the MongoDB shell query and Java driver code.

Có chìa khóa trong MongoDB không?

Tất cả các tài liệu trong bộ sưu tập MongoDB đều có khóa chính được đặt tên là _ID.Trường này được tự động gán cho một tài liệu khi chèn, do đó, hiếm khi cần cung cấp nó. . This field is automatically assigned to a document upon insert, so there's rarely a need to provide it.