如何在MongoDb集合中查找文档属性或其子文档包含空对象值from sklearn.svm import SVC
import numpy
dataset = numpy.loadtxt("training.txt", delimiter="\t")
X = dataset[:,0:15]
y = dataset[:,15:16]
y = y.ravel()
test_dataset_1 = numpy.loadtxt("test_14-15.txt", delimiter="\t")
X_test_1 = test_dataset_1[:,0:15]
y_test_1 = dataset[:,15:16]
y_test_1 = y_test_1.ravel()
model = SVC(kernel='linear', C=75)
model.fit(X, y)
score_1 = model.score(X_test_1, y_test_1)
的所有文档?
该物业的名称未知。
应返回哪些文件的示例:
{}
正如{
data: {
comment: {}
}
}
和data
所说,属性名称未知。
答案 0 :(得分:3)
在聚合管道中迭代对象属性的方法是$objectToArray运算符,它将文档转换为键值对的数组。不幸的是,它并没有压缩嵌入式文档。在实现此类支持之前,我没有看到使用纯聚合管道完成任务的方法。
但是,您始终可以使用$where运算符并将逻辑放入JavaScript代码中。它应递归迭代所有文档属性并检查该值是否为空文档。这是一个工作样本:
{ "_id" : 5, "p" : { } }
{ "_id" : 7, "nestedDocument" : { "p1" : 1, "p2" : { } } }
{ "_id" : 9, "nestedDocument" : { "deepDocument" : { "p" : { } } } }
如果您使用以下数据填充集合:
$objectToArray
查询将正确检测具有空属性的所有文档:
db.collection.aggregate(
[
{ "$project": {
_id: 1,
"properties": { "$objectToArray": "$$ROOT" }
}},
{ "$project": {
_id: 1,
propertyIsEmpty: {
$map: {
input: "$properties.v",
as: "value",
in: { $eq: ["$$value", {} ] }
}
}
}},
{ "$project": {
_id: 1,
anyPropertyIsEmpty: { $anyElementTrue: [ "$propertyIsEmpty" ] }
}},
{$match : {"anyPropertyIsEmpty" : true}},
{ "$project": {
_id: 1,
}},
]);
仅供参考,这是一个基于for song in MPMediaQuery.songs().items! {
print(song.persistentID.description)
print(song.title!)
print(song.assetURL?.absoluteString ?? "")
print(song.albumTitle ?? "Unknown")
...
}
的聚合管道,它检测空属性,但不在嵌套文档中:
<%= form_for @job, url: {action: "create"} do |f| %>
<%= f.text_field :something %>
<%= f.submit "Make changes" %>
<%= f.submit "Post Job" %>
<% end %>