如果我有这样的文件
{
"_id" : "word",
"nextWords" : {
"x" : 3,
"y" : 2,
"z" : 1,
"h" : 1,
"n" : 10
}
}
我希望以“降序”的形式返回“nextWords”中的对象。
我可以在MongoDB Shell或Java中执行此操作吗?
编辑:我希望“nextWords”根据其值按降序排序,因此预期输出为:
{
"n" : 10
"x" : 3,
"y" : 2,
"z" : 1,
"h" : 1,
}
答案 0 :(得分:0)
JSON对象没有订单。来自the specs第4.3.3节:
对象是Object类型的成员。它是一个无序的属性集合,每个属性 包含原始值,对象或函数。存储在对象属性中的函数称为a 方法
您不能依赖字段的顺序,但不能保证。
答案 1 :(得分:-1)
你可以这样做,如下
{“_ id”:“word”,“nextWords”:[{“word”:“x”,“count”:3},....]}
使用此地图缩小:
MapReduceCommand cmd = new MapReduceCommand(collection, map, reduce, null, MapReduceCommand.OutputType.INLINE, null);
MapReduceOutput out = collection.mapReduce(cmd);
for (DBObject o : out.results()) {
// here put them in an array
}
在java中运行它:
import cv2
import numpy as np
import math
img = cv2.imread('bone2.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,100,400,apertureSize =3)
cv2.imshow('canny',edges)
kernel=np.ones((5,5),np.uint8)
boneEdges=cv2.morphologyEx(edges,cv2.MORPH_GRADIENT,kernel)
minLineLength =1000
maxLineGap = 10
lines = cv2.HoughLinesP(boneEdges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
slope=(y2-y1),(x2-x1)
# print('slope',arctan(slope))
cv2.imwrite('houghlines5.jpg',img)
cv2.waitKey(0)
//对数组进行排序